2012-08-01 17 views
8

Araştırmamdan AspectJ'i kullanmanın iki yolu olduğunu biliyorum. İlk olarak, 'da @Aspect ek notu ekleyerek A.aj sınıfı ve ikincisi oluşturarak.AspectJ: iki tür öğretici

Özellikle

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

gibi hatları hakkında, bu ikinci tür için iyi bir öğretici arıyordu ama onlar denir bilmiyorum.

Bazı eğiticiler öneriyor musunuz?

cevap

1

Ek Açıklama ve XML yolları:

Ek Açıklama yolu: Minimal xml yapılandırma dosyası:

<!-- 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 yol: Minimal XML yapılandırma:

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

Kodda hiçbir değişiklik gerekmez.

Öncesi Req: aop Namespace AspectJ kullanan kişiler yararına kaydeden XML dosyası

+0

var, ama Bahar aşina olmamalıdır - Burada Vikram'ın cevabı Spring'in yapılandırmasında yönlerini nasıl yapılandırılacağı ele alıyor dosya. Ayrıca, XML yapılandırma dosyası aracılığıyla bir yönü tanımlamak için bir * üçüncü * yol sunar. Benzer bir özellik AspectJ konfigürasyon dosyasında (tipik olarak 'aop.xml' olarak adlandırılır), doğrudan Spring'ten ziyade AspectJ'de programlandığınızda kullanılabilir. Maalesef, bu orijinal soruyu ele almıyor. –