10

私の調査から、AspectJ を使用するには 2 つの方法があることがわかっています。1 つ目はA.ajクラスを作成することで、2 つ目は に注釈を追加すること@AspectですA.java

特に次のような行について、この2番目の種類の優れたチュートリアルを探していました

@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>

コードの変更は必要ありません。

前提条件: aop 名前空間が XML ファイルに存在する必要があります

于 2013-01-14T20:47:53.340 に答える