2012-05-04 5 views
33

Sto provando a impostare Spring AOP senza alcun XML. Vorrei abilitare <aop:aspectj-autoproxy> in una classe che è annotata con @Configuration.Come abilitare <aop: aspectj-autoproxy> con annotazioni basate su java

Questo è il modo in cui sarebbe definito in un file XML:

<aop:aspectj-autoproxy> 
<aop:include name="msgHandlingAspect" /> 
</aop:aspectj-autoproxy> 

ho cercato di annotare la mia classe con @Configuration e @EnableAspectJAutoProxy , ma non è successo niente.

+0

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/EnableAspectJAutoProxy.html – firstpostcommenter

risposta

42

Hai creato un bean aspetto nella stessa classe @Configuration? Ecco cosa the docs suggeriscono:

@Configuration 
@EnableAspectJAutoProxy 
public class AppConfig { 
    @Bean 
    public FooService fooService() { 
     return new FooService(); 
    } 

    @Bean // the Aspect itself must also be a Bean 
    public MyAspect myAspect() { 
     return new MyAspect(); 
    } 
} 
+1

Sì, ho creato un aspetto bean nella stessa classe @Configuration come mostrato nell'esempio. Ma ancora non succede nulla. Ho importato in un file xml aggiuntivo e aggiunto questo tramite ImportResource alla mia classe di configurazione. Ora l'Aspetto funziona. Ma il modo migliore sarebbe avere la configurazione nella stessa classe di configurazione – user1374907

+0

esattamente quello che sto cercando. Anche il nome della classe è lo stesso del mio: D –

+0

Non dichiaro un @Bean per il mio Aspetto, ma il consiglio funziona, perché? – Jaskey