从我的研究中我知道有两种方法可以使用AspectJ。首先是创建A.aj
类,然后在@Aspect
中添加注释A.java
。
我正在为第二类寻找一个好的教程,特别是关于像
这样的行@After("call(void fooMethod())")
@Around("call(void sendAndReceive())")
@Before("execution(String greeting(..)) && args(context)")
但我不知道他们是如何被召唤的。
你能推荐一些教程吗?
答案 0 :(得分:10)
此样式称为 @AspectJ ,以强调注释的作用。请查看official docs和@AspectJ cheat sheet。
答案 1 :(得分:2)
注释和XML方式:
注释方式: 最小xml配置文件:
<!-- Enable autoproxy to pick up all Java files tagged as @Aspect behave like Aspects -->
<aspectj-autoproxy/>
<!-- define bean -->
<!-- Note: MyUselessAspect.java should exist and this class must be tagged as @Aspect -->
<bean id="myUselessAspect" class="...MyUselessAspect" />
XML方式: 最小XML配置:
<aop:config>
<aop:aspect ref="myUselessAspect">
<!-- this point-cut picks all methods of any return type, from any package/class with any number of Parameters -->
<aop:before method="doSomethingBeforeMethodCall" pointcut="execution(* *.*(..))"/>
<aop:after method="doSomethingAfterMethodCall" pointcut="execution(* *.*(..))"/>
</aop:aspect>
</aop:config>
<!-- No need to Annotate this java Class as @Aspect. Neither you need to define any
Point-cuts or Advices in the Java file. The <aop:config> tag takes care of everything -->
<bean id="myUselessAspect" class="...MyUselessAspect"></bean>
无需更改代码。
预-REQ: aop命名空间必须存在于XML文件
中