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中文網其他相關文章!