ソウルの手描きイラスト春AOPの実装の原則!

Benpian春AOPの読者は、マクロの原則の実現によく理解しているので、詳細の一部を失い、特定の実装を参照できるように設計さ:正直な男の春のソースディレクトリ
この記事を読む前に、読者は春AOPとの春Iocのを(使用したいです一定の理解による@Aspect)は、いくつかの単語の男が地図上に直接、言いました

準備

  • Serviceクラス:メソッドを見つけ、保存方法とキャッシュ操作の前と後の方法を見つけることが必要である、この方法は、トランザクション操作を周りに保存する必要があります
  • CacheableAspectクラスセクション:操作の前と後のサービスのfindメソッドをキャッシュします
  • TransctionlAspectセクションカテゴリ:トランザクションを動作させるための方法の保存サービス
  • LogAspectアスペクトクラス:コントローラのログ要求のすべて
    AOP準備

春AOPプロキシ自動タイミング

service豆(すなわちの作成getBean("service"))によってAOP BeanPostProcessポストプロセッサ介入動作のためには
2例に分割されます。

  1. ユーザー定義targetSource、Beanが担当し、ユーザによって(インスタンス化、充填、初期化)が作成され、春Iocの代理対象オブジェクトのない所持がtraget、これは基本的には数年春5月に、多くの人々を発生しません。私はそれが存在するかわかりません
  2. 春Iocのは、通常は、プロキシオブジェクトを完成さtargetいっぱいの初期化をインスタンス化します。以下のためにそして、初期化ポストプロセッサに介入beanつまりserviceプロキシ

春AOPプロキシタイミング

エージェントのオペレーティングwrapIfNecessaryを作成します

上のすべての重点wrapIfNecessary操作を行われているもの
春AOPプロキシの作成

プロキシメソッド呼び出し

あなたがメソッドを呼び出す場合は、エージェントを作成したら?私たちJdk动态代理の例のように、メソッドの呼び出しがトリガされますinvoke方法を。特定基準源基礎となるソースのJDKの動的プロキシ
AOP実行方法原理

春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に会いました

概要

春AOPはちょうど読者にマクロ固有またはソースコードを読む必要の理解を与える春、Benpianの重要な部分です。

容易ではないペイント、大物トラブル所与の賞賛!問題は、メッセージを残すことができます理解していない、間違った場所を探検する歓迎もありますが、それにお答えします!
ここに画像を挿入説明ここに画像を挿入説明ここに画像を挿入説明

公開された43元の記事 ウォン称賛57 ビュー40000 +

おすすめ

転載: blog.csdn.net/chaitoudaren/article/details/105352273