首页 > 解决方案 > Spring AOP 不适用于 @Configuration 和 @EnableAspectJAutoProxy

问题描述

在我的应用程序中,我在控制器和 DAO 层上使用 AOP - 它工作正常。

但是,在我的服务层上,它是在 @Configuration 类(作为 bean)中创建的,它不起作用。

所以我的问题是控制器和 DAO 层的切入点和建议有效 - 但不适用于服务层。

在互联网上阅读 - 我发现我应该添加 @EnableAspectJAutoProxy 注释 - 但它仍然不适用于此。

边注:

@Bean("nameOfResolver")
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS) 

不工作的类是这样的

public class ResolveImpl implements Resolve {

private static final Logger LOGGER = LoggerFactory.getLogger(ResolveImpl.class);

@CustomAnnotation(user = "user")
public TestClass createTestClass(String user) {
    ......
    }
}

我的 bean 中有这个,它解决了应该返回哪个 bean。

非常感谢你的帮助

标签: springconfigurationaopspring-aop

解决方案


好的,我终于找到了解决问题的方法。由于 Spring AOP 使用代理机制,我有一个方法可以调用同一类中的 @CustomAnnotation(user = "user") 方法。这会导致代理机制不被触发。检查 Spring AOP not working for method call inside another method for解释


推荐阅读