2012-08-01 12 views
8

Dalla mia ricerca so che ci sono due modi per utilizzare AspectJ. Il primo è creando la classe A.aj e la seconda aggiungendo l'annotazione @Aspect in A.java.AspectJ: due tipi di tutorial

ero alla ricerca di un buon tutorial per questo secondo tipo, soprattutto di linee come

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

ma io non so come si chiamano.

Potresti consigliare alcuni tutorial?

risposta

1

annotazione e la XML modi: modo

della nota: Minimal XML file di configurazione: modo

<!-- 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: configurazione XML minima:

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

Nessuna modifica nel codice richiesta.

Pre-Req: AOP Namespace deve esistere nel file XML

+0

Notando a beneficio di persone che utilizzano AspectJ, ma non ha familiarità con la Primavera - La risposta di Vikram qui si rivolge come configurare aspetti nella configurazione di primavera file. Inoltre, offre un * terzo * modo per definire un aspetto - tramite il file di configurazione XML. Una funzionalità simile è disponibile nel file di configurazione AspectJ (in genere chiamato 'aop.xml'), quando si programma direttamente in AspectJ, piuttosto che in Spring. Purtroppo, questo non sta affrontando la domanda originale. –