首页 > Java > java教程 > 正文

为什么我的 AOP 方面不触发 Spring 中的嵌套方法调用?

Linda Hamilton
发布: 2024-11-01 01:40:28
原创
967 人浏览过

Why Doesn't My AOP Aspect Trigger for Nested Method Calls in Spring?

Spring 中嵌套方法调用 AOP 失败问题排查

ABC.java 类中定义了两个方法:method1() 和 method2 ()。目标是为 method2() 调用实现 AOP。

一种方法涉及使用 checkAccess() 方面方法创建 AOPLogger.java 类。在配置文件中,定义了一个通知 bean,并配置了一个切面以在调用 method2() 之前调用 checkAccess()。

但是,尽管有这些配置,当 method2( ) 被执行。

根本原因:

在 Spring AOP 中,方面应用于 bean 周围的代理对象。当获取到 bean 实例时,它不是实际的类,而是一个实现接口并添加 AOP 等功能的合成类。

解决方案:

在当前场景中, method1() 直接调用 method2()。由于未在代理对象上调用该方法,因此未触发切面。

要解决此问题,有两个选项:

  • 将 method1() 和 method2() 拆分为分开的豆子。这允许切面应用于 method2() 周围的代理对象。
  • 使用不依赖于代理对象机制的非面向 Spring 的 AOP 框架。

说明:

“理解 AOP 代理”下的 Spring 文档详细说明了此行为并提供了解决方法。一种解决方法是将这些方法分离到单独的 bean 中,如上所述。

以上是为什么我的 AOP 方面不触发 Spring 中的嵌套方法调用?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!