首頁 > Java > java教程 > 為什麼我的 AOP 方面不觸發 Spring 中的嵌套方法呼叫?

為什麼我的 AOP 方面不觸發 Spring 中的嵌套方法呼叫?

Linda Hamilton
發布: 2024-11-01 01:40:28
原創
1053 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板