2012-05-04 19 views
33

Estoy intentando configurar Spring AOP sin ningún XML. Me gustaría habilitar <aop:aspectj-autoproxy> en una clase que es anotada con @Configuration.Cómo habilitar <aop: aspectj-autoproxy> con anotaciones basadas en Java

Esta es la forma en que se define en un archivo XML-:

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

traté de anotar mi clase con @Configuration y @EnableAspectJAutoProxy pero no pasó nada.

+0

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

Respuesta

42

¿Creó un aspecto bean en la misma clase @Configuration? Esto es lo que sugieren the docs:

@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í, he creado un aspecto bean en la misma clase @Configuration como se muestra en su ejemplo. Pero aún nada sucede. Ahora importé el en un archivo xml adicional y lo agregué a través de ImportResource a mi clase de configuración. Ahora el Aspecto funciona. Pero la mejor manera sería tener la configuración en la misma clase de configuración – user1374907

+0

Exactamente lo que estoy buscando. Incluso el nombre de la clase es el mismo que el mío: D –

+0

No declaro un @Bean para mi Aspecto, pero el consejo funciona, ¿por qué? – Jaskey