Spring 中嵌套方法调用 AOP 失败问题排查
ABC.java 类中定义了两个方法:method1() 和 method2 ()。目标是为 method2() 调用实现 AOP。
一种方法涉及使用 checkAccess() 方面方法创建 AOPLogger.java 类。在配置文件中,定义了一个通知 bean,并配置了一个切面以在调用 method2() 之前调用 checkAccess()。
但是,尽管有这些配置,当 method2( ) 被执行。
根本原因:
在 Spring AOP 中,方面应用于 bean 周围的代理对象。当获取到 bean 实例时,它不是实际的类,而是一个实现接口并添加 AOP 等功能的合成类。
解决方案:
在当前场景中, method1() 直接调用 method2()。由于未在代理对象上调用该方法,因此未触发切面。
要解决此问题,有两个选项:
说明:
“理解 AOP 代理”下的 Spring 文档详细说明了此行为并提供了解决方法。一种解决方法是将这些方法分离到单独的 bean 中,如上所述。
以上是为什么我的 AOP 方面不触发 Spring 中的嵌套方法调用?的详细内容。更多信息请关注PHP中文网其他相关文章!