Benpian春AOPの読者は、マクロの原則の実現によく理解しているので、詳細の一部を失い、特定の実装を参照できるように設計さ:正直な男の春のソースディレクトリ
この記事を読む前に、読者は春AOPとの春Iocのを(使用したいです一定の理解による@Aspect)は、いくつかの単語の男が地図上に直接、言いました
準備
Service
クラス:メソッドを見つけ、保存方法とキャッシュ操作の前と後の方法を見つけることが必要である、この方法は、トランザクション操作を周りに保存する必要がありますCacheableAspect
クラスセクション:操作の前と後のサービスのfindメソッドをキャッシュしますTransctionlAspect
セクションカテゴリ:トランザクションを動作させるための方法の保存サービスLogAspect
アスペクトクラス:コントローラのログ要求のすべて
春AOPプロキシ自動タイミング
でservice
豆(すなわちの作成getBean("service")
)によってAOP BeanPostProcessポストプロセッサ介入動作のためには
2例に分割されます。
- ユーザー定義
targetSource
、Beanが担当し、ユーザによって(インスタンス化、充填、初期化)が作成され、春Iocの代理対象オブジェクトのない所持がtraget
、これは基本的には数年春5月に、多くの人々を発生しません。私はそれが存在するかわかりません - 春Iocのは、通常は、プロキシオブジェクトを完成さ
target
いっぱいの初期化をインスタンス化します。以下のためにそして、初期化ポストプロセッサに介入bean
つまりservice
プロキシ
エージェントのオペレーティングwrapIfNecessaryを作成します
上のすべての重点wrapIfNecessary
操作を行われているもの
プロキシメソッド呼び出し
あなたがメソッドを呼び出す場合は、エージェントを作成したら?私たちJdk动态代理
の例のように、メソッドの呼び出しがトリガされますinvoke
方法を。特定基準源基礎となるソースのJDKの動的プロキシ
春AOPインターセプタの実行順序
上記からわかるように、スプリングAOPプロキシinvoke
方式は、実際に拦截器
実施しました。
私たちは最初に、春AOPの実行順序を見て栈
LIFOなど
の原則のAOPインターセプターの実装
そして、インターセプタチェーンとどのようにことを確認するために、before
中をafter
その前に?しかし、また、ことを確認するために、find
実行メソッドの順序?詳細はを参照してくださいMethodInvocationの原則を呼び出すインターセプタ
チャート与えられたあなただけのアイデアを得ることができ、原則の実現のこの部分は、無限のいくつかの言葉で説明されている
ソースインターセプタコンクリート:
public class MethodBeforeAdviceInterceptor implements MethodInterceptor, BeforeAdvice, Serializable {
private final MethodBeforeAdvice advice;
@Override
public Object invoke(MethodInvocation mi) throws Throwable {
// 先调用before方法
this.advice.before(mi.getMethod(), mi.getArguments(), mi.getThis());
// 继续链式调用
return mi.proceed();
}
}
public class AfterReturningAdviceInterceptor implements MethodInterceptor, AfterAdvice, Serializable {
private final AfterReturningAdvice advice;
@Override
public Object invoke(MethodInvocation mi) throws Throwable {
// 先进行链式调用
Object retVal = mi.proceed();
// 再调用afterReturning方法
this.advice.afterReturning(retVal, mi.getMethod(), mi.getArguments(), mi.getThis());
return retVal;
}
}
フィナーレタイトル:春AOPは、円形の依存関係を満たし
これは春の理解の意味を理解すると言うことができる最も複雑なピース春の源とみなさ10星の難易度の一部は、アリのレベルに達しています。ここではいくつかの言葉で説明することは不可能である、とだけマップを掲示し、私たちはマクロの知識を持って、詳細春AOPは、円形の依存関係を満たし
概要
春AOPはちょうど読者にマクロ固有またはソースコードを読む必要の理解を与える春、Benpianの重要な部分です。
容易ではないペイント、大物トラブル所与の賞賛!問題は、メッセージを残すことができます理解していない、間違った場所を探検する歓迎もありますが、それにお答えします!