NutzCN Logo
问答 如何在非web项目中单独使用aop
发布于 3196天前 作者 qq_a5f7da7d 2053 次浏览 复制 上一个帖子 下一个帖子
标签:

有个非web项目,想通过aop来控制事务,看了几种aop框架,性能都不太好,如果用nutz的aop来处理,能用吗?如果能用有没有例子?非常感谢!

5 回复

会用到NutIoc吗?

那写起来就比较麻烦咯, 需要自行替换到新建对象的步骤

	@Test
	public void aop_without_ioc() throws Exception {
		Class<EmailServiceImpl> type = EmailServiceImpl.class;
		ClassDefiner cd = DefaultClassDefiner.defaultOne();
		ClassAgent agent = new AsmClassAgent();
        agent.addInterceptor(new RegexMethodMatcher(".+"), // 匹配需要拦截的方法
                                 new MethodInterceptor() { // 定义一个拦截器
									public void filter(InterceptorChain chain) throws Throwable {
										System.out.println("before");
										chain.doChain();
										System.out.println("after");
									}
								});
        Class<EmailServiceImpl> klass = agent.define(cd, type); // 生成被aop化的类
        EmailServiceImpl es = klass.newInstance(); // 生成被aop化的对象
        
        es.send(null, null, null); // 调用原类的各种方法
	}

输出

before
send mail xxx.,xxxx,,xxx
after

比较麻烦,看来nutz主要还是用于web项目,还是非常感谢!

把对象给ioc管理就方便了

添加回复
请先登陆
回到顶部