春のIoC / AOP基本原理

1.IoC

春の公式は、テキストを引用:この章では、のSpringフレームワークの実装をカバー

コントロール(IOC)の反転[1]原理。IoCも依存性注入(DI)として知られています。それは

プロセスは、それによってのみ、彼らはと協力し、他のオブジェクトで、つまり、それらの依存関係を定義するオブジェクト
コンストラクタ引数ザ・引数を通じて工場の方法,,またはでON設定されているプロパティへの
コンテナでITが構築や工場のメソッドから返された後、オブジェクトのインスタンス,.次いで注入
したがって、このプロセスは基本的に逆である。ITがBeanを作成するときにこれらの依存関係を
ITSのインスタンス化または位置制御豆自体のコントロールの名前を反転(IOC)、
クラスの使用直接構築することによって依存関係を、またはそのような機構ロケータサービスとしての
パターン。
「制御の反転(IOC)は、」また、「依存性注入(DI)」と呼ばれる、オブジェクト依存性プロセスの定義であり、オブジェクトのみ
と構造パラメータ、ファクトリメソッドのパラメータ、プロパティ又はファクトリメソッドは、インスタンスのリターンオブジェクト関連。作成するBeanコンテナ
これらの依存関係の時間を注入。このプロセスはそれほど依存関係逆転のために名付け逆のプロセスである、ことによって、オブジェクトのインスタンスを作成します
コンストラクタまたはそれを達成するために提供するサービスの位置決め機構。
IoCの最大の利点は、「デカップリング」です。

1.1初期化処理容器
新しい新しいClassPathXmlApplicationContext();
のContextLoaderListener /のDispatcherServlet - > WebApplicationContext
初期フローApplicationContextのコンテナは主にクラスAbstractApplicationContext合成リフレッシュある
実装。一般的な方法:実行する後続処理(例:コンテキスト:propertyPlaceholderたBeanFactoryがオブジェクトである
、など) - > bean-のコンテキスト(文脈)を登録> Beanがある登録切片プロセッサ(AOP関連) - >初期化に
以下のメッセージ(IDが初期化されますmessgeSource国際Beanオブジェクト) - >イベントのマルチキャスト(処理イベント・モニターが初期化
>初期設定のテーマリソース(SpringUIテーマThemeSource) - - >カスタム登録などApplicationEvent、として、耳を傾ける)
-definedリスナーを- >すべての非レイジーのinitをインスタンス化シングルトンインスタンス- >対応するイベント(実施関連するライフサイクル・インターフェース公開
解除等ライフサイクルイベント)
春に、容器を構築するプロセスが同期されます。同期は、容器を構築するプロセスは、しないことを保証するために行われる
マルチスレッドリソースの競合が生じます。

たBeanFactoryの構築。ApplicationContextたBeanFactoryは、親インタフェースです。これは、スプリングフレームである
最上位のコンテナファクトリオブジェクト。たBeanFactory Beanはオブジェクトのみを管理することができます。他の機能はありません。以下のような:AOP管理部、
その上propertyplaceholderのロードと。たBeanFactory機能の構築は、Beanオブジェクトを管理されています。
創造Beanオブジェクト管理たBeanFactory。
postProcessBeanFactory -たBeanFactoryを扱うことができない構成内容をロードします。以下のような:
propertyplacehodlerロード。
invokeBeanFactoryPostProcessorsは-豆容器が管理できるようにロードされたコンテンツを踏むだろう
ApplicationContextのオブジェクトに登録します。本質的には、下部にロードされたコンテンツpostProcessBeanFactory
コンテナApplicationContextのBeanオブジェクトにパッケージ化を管理することができます。
registerBeanPostProcessors -登録操作の最後のステップを完了し続けます。豆オブジェクト設定ファイルの構成が
作成され、登録は完了です。
initMessageSource -国際化、国際化。国際的なニュースソースを初期化。
initApplicationEventMulticaster -イベントマルチキャストリスナを登録します。ApplicationEventイベントとして。これは、ばねである
フレームワークオブザーバーパターン実装機構。
onRefresh -初期テーマリソース(ThemeSource)。話題の情報Springフレームワークを表示します。
registerListeners -リスナーを作成して登録します。
finishBeanFactoryInitialization -全てのinit-怠惰=偽Beanオブジェクトに登場初期構成。
そして、Beanオブジェクトはシングルトンでなければなりません。
finishRefresh -最後のステップ。最後のイベントを解除します。ライフサイクルリスナイベント。ばね容器は緑色定義
ライフサイクル・インターフェースを。コンテナは、コンテナが破壊する前に資源の回復を呼び出して、初期化開始通話を実現することができます。ライフサイクル・インターフェース。

1.2以上のコンテナ/船サンズ概念
  Springフレームワークは、コンテナがアプリケーション・コンテキストを複数作成することができます。コンテナが親子関係を持つことをお勧めします。することができる
インタフェースで定義された親コンテナのsetParent ConfigurableApplicationContext方法により提供。親たら
-child関係、あなたは子コンテナによってPropertyPlaceHolder以外の親コンテナリソースのすべてを取得することができ、親コンテナではありません
(Javaの継承で同様のタイプの)任意のリソースのサブコンテナを得ることができ。
典型的なコンテナの父と息子:春とspringmvcを同時に使用。ContextLoaderListenerは、作成した
コンテナが親コンテナ、コンテナのDispatcherServletは、子コンテナを作成することです。
JVM、一つだけのコンテナツリーツリー構造を確認してください。親コンテナのリソースは、サブコンテナを介してアクセスすることができます。

1.3 Pドメイン/ C-ドメインは
Spring2.0、Spring3.1の後、C(constractor、引数タグ)を導入した後、P(プロパティタグ)ドメインを導入
ドメイン。あなたは、設定ファイルを簡素化し、コンストラクタ、引数のプロパティを設定することができます。

ルックアップメソッド1.4
ルックアップ法は一度適用、スプリングフレームワークCGLIB技術は、自動的に動的作成するために指定された型を使用して
自動的に抽象メソッド、サブタイプ。動的にデータ依存性注入の準備。
効率で、直接カスタムサブタイプ遅いより。比較的より一般的。ルックアップ方法は、正方形提供することができる
方法、返されたオブジェクトは、動的オブジェクトが返さ達成することができます。
ファクトリメソッドでカスタマイズされた時間を使用することは困難です。
これは、アプリケーションテンプレートです。拡張ファクトリメソッド。
この方法は、オブジェクトタイプがファクトリインタフェースタイプである返します。そして返されたアプリケーションオブジェクトの異なるバージョンに関連して使用されなくてもよいです。
複数のファクトリクラスの開発を避けるために。

2 AOP

アスペクト指向プログラミングは、基本原理は、動的プロキシの実装です。あなたが政策目標インターフェイスを切った場合は、使用
JDKダイナミックプロキシ技術を、何のインタフェースは、動的プロキシCGLIB技術を生成するために使用されていません。
ビジネス環境では、インタフェースの使用は、主スプリングJDKの動的生成方法の分析において、非常に高い
管理技術は、動的プロキシオブジェクトを生成します。メインコードJdkDynamicAopProxy、AdvisedSupport、
DefaultAdvisorChainFactory、ReflectiveMethodInvocationクラス。

3. AOP-表現一般的に使用されるポイントカット
AOPの開発、と呼ばれる概念があるいくつかの非常に重要な概念がある「カットオフポイントを。」代表的には、世代にカット知らさ
位置点コード実行の流れ。
カットポイントは、一般式で定義されます。SpringフレームワークはSpringELによって解析的表現になります。多くの表現があります
定義された方法は。別の分析結果に対応します。

3.1実行表現
の構文:実行(パッケージ名、クラス名戻り値の型メソッド名(パラメータリスト)。)
として:
実行(java.lang.Stringでcom.xxx.service.AService.test(java.lang.Integerの))
試験方法でcom.xxx.service.AService型を有し、およびパラメータ整数、文字列の戻り型
セクションを増加させます。
実行(* com.xxx.AService。*(.. ))
の任意の方法のcom.xxx.AServiceの種類によって、任意のタイプの結果を返す、パラメータテーブルに限定されるものではないが、セクションが増加しています。
アプリケーション:最も一般的に使用されます。これは、比較的、最も一般的です。標準的な方法、接点の定義に従って行わ。以下のような:トランザクション処理、日本
チー処理。

3.2標的発現
対象オブジェクトには、発現カットオフ点の方法として定義されます。
構文:ターゲット(パッケージ名インタフェース名。)
のような:ターゲット(com.xxx.IA) -ターゲット・オブジェクトのプロキシを自動的れるように、すべては、そのクラスIAインターフェースを実現
態様を実装する、通知織り込ま増やします。
アプリケーション:構成が特定のインターフェイスを提供します。以下のような:ログインします。あなたが実行するためにログイン提携論理時間
アルバムは、より多くのです。別のビジネスプロセスでは、子会社のロジックが異なっています。以下のような:電気の供給、ログインする時期かもしれ
カートのマージを実行する必要性を。

3.3この式は
、カットオフポイントとして使用されるインターフェイスプロキシオブジェクトを実装します。そして、ターゲットは非常に似ています。
構文:この(パッケージ名インタフェース名。)
として:この(com.xxx.IA) -プロキシオブジェクトは、接続点として、IAプロキシインタフェースを実装している場合。
アプリケーション:特定のオファーのプロキシ設定。ターゲット・カットポイントよりも微細な粒子サイズ。ターゲットオブジェクトが可能なので、より
実現。プロキシオブジェクトは、特定のカットオフポイントを提供する、達成するために特定のターゲットオーディエンスのための複数のインタフェースとすることができます。以下のような:銀の
ログイン行、非常に多くの銀行口座の種類。クロス。以下のような:デビットカード、クレジットカード、デビットカードローン、クレジット
ノートの返済カード。これは、インターフェース、記録の保存や他のローン情報の返済のためのカットオフポイントを提供することができます。

式内3.4
ターゲットとしてパッケージ、定義されたカットポイントに。
(。*パッケージ名):構文内-インターフェイスまたはパッケージのいずれかのタイプに代わっては、カットオフポイントとしてあります。
アプリケーション:パケットを提供するための接点、目標よりもサイズが粗いです。例えば:すべてのインターフェースが必要とされるパッケージ
補助ロジックを実行します。以下のような:電子ビジネスプラットフォームで受注。サービス注文が特定のロジック(タイムスタンプ学校の必要とするかもしれ
検査、在庫確認など)、これらの論理、切断面における他の事業ラインを提供する必要はありません。

3.5引数発現
定義カットポイントなどの標準の特定のパラメータに。
構文:引数(タイプ、タイプ) -カットオフ点として、時間の要件を満たすためにパラメータテーブル方法を表します。パラメータテーブルです
シーケンシャル。
用途:主にキャリブレーションパラメータで使用。以下のような:ログイン時には、2つの文字列パラメータ(ログイン名と秘密合格しなければならない
コードを)。argsが定義することができます。これは、実行によって実現されます。以下のような:実行(.. * XXXX *ログイン(..))
引数(文字列、文字列)。それは表現の最低周波数を使用することです

 

おすすめ

転載: www.cnblogs.com/Anemia-BOY/p/11271837.html