如何使用基于 java 的注释启用<aop:aspectj-autoproxy>

2022-09-01 03:53:19

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

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

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

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


答案 1

您是否在同一类中创建了一个方面豆?以下是文档的建议:@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,你需要使用大于1.8.X的AspectJ版本。

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

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

}

推荐