10

根据我的研究,我知道有两种使用 AspectJ 的方法。首先是创建A.aj类,其次是@AspectA.java.

我正在为第二种寻找一个很好的教程,尤其是关于像这样的行

@After("call(void fooMethod())")  
@Around("call(void sendAndReceive())") 
@Before("execution(String greeting(..)) && args(context)")

但我不知道他们是怎么称呼的。

你能推荐一些教程吗?

4

2 回答 2

11

这种风格称为@AspectJ是为了强调注解的作用。查看官方文档@AspectJ 备忘单

于 2012-08-01T14:28:54.823 回答
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>

无需更改代码。

Pre-Req: aop 命名空间必须存在于 XML 文件中

于 2013-01-14T20:47:53.340 回答