Подтвердить что ты не робот

Как включить <aop: aspectj-autoproxy> с аннотациями на основе java

Я пытаюсь настроить Spring AOP без XML. Я хотел бы включить <aop:aspectj-autoproxy> в классе, который аннотируется с помощью @Configuration.

Так будет определяться в XML файле:

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

Я попытался аннотировать мой класс с помощью @Configuration и @EnableAspectJAutoProxy но ничего не произошло.

4b9b3361

Ответ 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();
    }

}