39

我正在尝试设置没有任何 XML 的 Spring AOP。我想<aop:aspectj-autoproxy>在一个用@Configuration.

这是在 XML 文件中定义的方式:

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

我试图用注释我的类,@Configuration@EnableAspectJAutoProxy 什么也没发生。

4

2 回答 2

48

您是否在同一个@Configuration类中创建了一个方面 bean?这是文档的建议:

 @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();
     }
 }
于 2012-05-04T13:23:36.487 回答
3

我使用了公认的答案解决方案,但遇到了意想不到的问题,直到将此参数添加到配置中才明白。

@EnableAspectJAutoProxy(proxyTargetClass = true)

如果您在 @Controller 中使用注释,则需要以这种方式进行配置

请记住,如果您有 java 8,则需要使用大于 1.8.X 的 AspectJ 版本

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

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

}
于 2019-06-05T10:15:06.653 回答