Как включить <aop: aspectj-autoproxy> с аннотациями на основе java
Я пытаюсь настроить Spring AOP без XML.
Я хотел бы включить <aop:aspectj-autoproxy>
в классе, который
аннотируется с помощью @Configuration
.
Так будет определяться в XML файле:
<aop:aspectj-autoproxy>
<aop:include name="msgHandlingAspect" />
</aop:aspectj-autoproxy>
Я попытался аннотировать мой класс с помощью @Configuration
и @EnableAspectJAutoProxy
но ничего не произошло.
Ответы
Ответ 1
Создал ли аспект bean в том же классе @Configuration
?
Здесь документы предлагают:
@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();
}
}
Ответ 2
Я использовал принятое решение для ответа, но у меня были неожиданные проблемы, и я так и не понял, пока не добавлю этот параметр в конфигурацию.
@EnableAspectJAutoProxy (proxyTargetclass= true)
Если вы используете аннотацию в @Controller, вам нужно настроить таким образом
помните, если у вас есть Java 8, вам нужно использовать версию AspectJ больше, чем 1.8.X
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class AppConfig {
@Bean
public AccessLoggerAspect accessLoggerAspect() {
return new AccessLoggerAspect();
}
}