所以,当我的域中对象的状态发生变化时,我开始考虑使用AspectJ来处理处理事件 .
实际上,我想写一些包含我域中所有setter方法的建议 . 调用通知时,它将检查所设置字段的初始值,运行setter,然后在setter执行后检查该值 . 如果值发生更改,它将向事件侦听器触发事件,通知更改 .
我使用了这里找到的教程:http://www.andrewewhite.net/wordpress/2010/03/17/aspectj-annotation-tutorial/,但我只是使用LTW方法来编织我的建议,我不是使用AspectJ语言编写建议并预编译它 .
我的aop.xml(在我的测试套件的META-INF中)看起来像这样:
<aspectj>
<aspects>
<aspect name="domain.aop.TestAspect"/>
</aspects>
</aspectj>
我创建的Aspect类看起来像这样:
package domain.aop;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class TestAspect
{
@Around("call(* domain.*.set*(..))")
public void aroundSetMethods (JoinPoint jp)
{
System.out.println ("aroundSetMethod called");
}
}
当我运行我的测试用例时,我可以看到(通过设置断点)一个方法(domain.Error.setTask())被调用 . 我相信这应该引发我的建议,但我从未接受过建议方法 .
我在这里做错了什么指针?
谢谢
1 回答
您还必须包括要编织的类 .
尝试用这个替换你的aop.xml文件:
如果已正确配置运行时服务器或Java代理,则还可以在日志中查看编织过程 .
我希望它有所帮助!