Spring でのネストされたメソッド呼び出しの AOP エラーのトラブルシューティング
ABC.java クラス内では、method1() と method2 という 2 つのメソッドが定義されています。 ()。目標は、method2() 呼び出しに AOP を実装することです。
1 つのアプローチには、checkAccess() アスペクト メソッドを使用して AOPLogger.java クラスを作成することが含まれます。設定ファイルでは、アドバイス Bean が定義され、method2() が呼び出される前に checkAccess() を呼び出すようにアスペクトが設定されています。
ただし、これらの設定にもかかわらず、method2() の場合、checkAccess() メソッドは呼び出されません。
根本原因:
Spring AOP では、Bean を囲むプロキシ オブジェクトにアスペクトが適用されます。 Bean インスタンスが取得されるとき、それは実際のクラスではなく、インターフェイスを実装し、AOP のような機能を追加した合成クラスです。
解決策:
現在のシナリオでは、 method1() は、method2() を直接呼び出します。メソッドがプロキシ オブジェクトで呼び出されないため、アスペクトはトリガーされません。
この問題を解決するには、2 つのオプションがあります。
説明:
Spring ドキュメントの「AOP プロキシについて」では、この動作について詳しく説明されており、回避策が提供されています。回避策の 1 つは、上で提案したように、メソッドを個別の Bean に分割することです。
以上がAOP アスペクトが Spring でネストされたメソッド呼び出しをトリガーしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。