web-dev-qa-db-fra.com

Comment activer <aop: aspectj-autoproxy> avec des annotations basées sur Java

J'essaie de configurer Spring AOP sans XML. Je voudrais activer <aop:aspectj-autoproxy> dans une classe annotée de @Configuration.

C'est ainsi qu'il serait défini dans un fichier XML:

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

J'ai essayé d'annoter ma classe avec @Configuration et @EnableAspectJAutoProxy mais rien ne s'est passé.

37
user1374907

Avez-vous créé un bean aspect dans le même @Configuration classe? Voici ce que les documents suggèrent:

 @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();
     }
 }
46

J'ai utilisé la solution de réponse acceptée mais j'ai eu des problèmes inattendus et je ne comprends jamais jusqu'à ce que ce paramètre soit ajouté à la configuration.

@ EnableAspectJAutoProxy (proxyTargetClass = true)

Si vous utilisez une annotation dans @Controller, vous devrez configurer de cette manière

rappelez-vous si vous avez Java 8 vous devez utiliser une version d'AspectJ supérieure à 1.8.X

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class AppConfig {

    @Bean
    public AccessLoggerAspect accessLoggerAspect() {
        return new AccessLoggerAspect();
    }

}
0
FarukT