spring - 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。
非常感谢你的帮助
解决方案
好的,我终于找到了解决问题的方法。由于 Spring AOP 使用代理机制,我有一个方法可以调用同一类中的 @CustomAnnotation(user = "user") 方法。这会导致代理机制不被触发。检查 Spring AOP not working for method call inside another method for解释
推荐阅读
- selenium - 无头 chrome 的字距问题
- selenium-webdriver - 如何创建xpath以从子节点回溯到父节点
- javascript - 删除具有和部分的字符串
- typescript - 保持 IE11 打开 2 天后出现内存泄漏
- php - GET方法错误:注意:未定义索引
- javascript - 使用函数在滞后脚本上加载动画
- python - 使用机器人框架将类的对象传递给另一个类
- unit-testing - 如何对无法构造时抛出的智能构造函数进行单元测试?
- symfony - 使用 SonataAdminBundle 显示大量数字
- java - 如何比较drools中数组列表的通用元素?