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é.
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();
}
}
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();
}
}