スプリング二つの制御アーキテクチャでは、反転されIOC とアスペクト指向AOPを
スプリング高い凝集力と低い結合のオブジェクト指向特性のルールの枠組み良い解釈。高凝集に反映されるAOP 、低い結合はで具現IOC に。
制御の逆転は、伝統的なクラスイニシアチブからインスタンスを得るパッシブにクラスのインスタンスを作成するためにインスタンス化オブジェクトの制御を指します。従来でのJava あなたが別のクラスのクラスインスタンスを取得したい場合は、プログラミング、それはによってクラスが内部に存在していなければならない新しいクラスとクラスのポール間の依存性の原因となる別のクラスのキーを、インスタンス化します強い結合が非常に高いです。スプリングフレームワーク、我々はによって構築スプリング容器(applicationContext.xmlを)から直接クラス変数をインスタンス化する必要がある場合、他のクラスのインスタンスを作成および管理するスプリングその上に取得容器はそう、これは、効果的にクラスとクラス間の結合を低減することができます。
で春のクラスは、4つの方法容器をインスタンス化されます
以下の動作の基礎と applicationContext.xmlを設定ファイル(Javaコードしない限り)
A:引数なしのコンストラクタでインスタンスを作成します
注:クラスのニーズの名前と完全なパスなどの情報にアクセスする必要があり、クラスは内部が達成できない持っている場合は引数のコンストラクタを
二:静的プロジェクトを作成します。
まず、静的買収構築する必要がある豆工場を
その後、工場の方法によって得られた豆例
注:静的なファクトリメソッドを追加してください
3:インスタンスファクトリを介して取得豆の静的工場の上、静的削除
四:によってFactroyBean 自己興味のBaiduのインスタンスを作成します
上記の例は、中に注入され、Springコンテナクラス属性値注射または依存二つの方法しばらく
A:コンストラクタによって注入
名前前記キーワードではなく、コンストラクタのパラメータの添字を持つことができる、しかし配列に対応する、と値キーワード属性値通常の射出注入型の値が文字列である、基本データ型、およびにREF 注射のための属性は、他のオブジェクトへの参照のために、ある複合タイプの値に注入される(文献名の値はの例を注入しなければならないビーン名相当)
二:によってセット方法インジェクション
セット方法の原理は、オブジェクト属性ヘッダ大文字を注入することで、その後の前に設定するためのメソッド、およびクラスを設定し、対応する割り当てのための方法を、対応するエンティティクラスに対応を有していなければならないようにセット方法
方法他のエンティティにクラスのインスタンスを取得します。
私たちは春のコンテナへのビーンインスタンス化した後は、このインスタンスを参照しようとしなければならない、このインスタンス内の参照は、我々は、作成する必要が春のコンテナを
私たちは、getBeanによって完成した容器を作成することができ、コンテナ方式の値であること
GetBean:注ことをパラメータと必須春のコンテナがインスタンス化ビーンさんID 一貫した
良いとアスペクト指向プログラミングの通知に元のコードを高めるためのプログラムを変更せずに、開閉の原則に従ってください。いわゆるセクションでは、我々は上渡し、プロキシオブジェクトとネイティブオブジェクトの組み合わせを指し applicetionContext.xml アドバイス、サラウンド通知プロファイル、通知と投げた後、その事前の通知を使用してネイティブオブジェクトの実行時の動的プロキシオブジェクト最終的な通知は、いずれかのネイティブ・オブジェクト・モニタリングのようなこれらの通知は、ネイティブオブジェクト、ユーザーの権限管理を向上させることができる、形成するために互いに結合の両方AOPを。
我々は、関連する用語のいくつかを理解する必要が使用するアスペクト指向プログラミング
接続点:ジョインポイント の接続点は、具体的方法で動作するように意味、接続点に置かれ、方法がブロックされる必要があります
ポイントカット:ポイントカットの 開始点は、一般に、接続点の集合であるクラス内のすべてのメソッドを指し、インターセプトするクラスのメソッドの一部または全部を
プロキシオブジェクト:
通知 / エンハンスメント:アドバイス通知/ プロキシクラスを高める通知傍受は、エントリポイント、またはオブジェクトまたはメソッドまたは増強後の接続点を指し
A:まず、我々は設定する必要がネイティブオブジェクトの1組は、アドバイスの後、事前通知のシリーズで、このプロキシクラスサラウンド通知をプロキシクラスを強化しました
-------------------------------------------------- -------------------------------------------------- ------------------
事前通知:第一の方法上図(クラス内で宣言される前通知エージェントの形式で注釈を使用して)、この方法は、事前通知の前に行われるため、それは必要としない事前通知が値を返すだけで事前通知は、次のように述べることができます
リア通知:第二の方法上記画像は、戻り値の必要性(オブジェクト・ラン)同じセクションの名前に必要な戻り値と戻り値は、パラメータジョインポイントは、接続ポイントオブジェクトを指し、視聴情報を取得するために使用します
サラウンド通知:例外をスローする必要性、および提供されるProceedingJoinPointの対象オブジェクトが対象プロセスが呼び出した場合に実行実行かを制御するためのパラメータをpro.proceed()とすることができます
通知を例外:スローされた例外がある場合
最終通告:例外は、最終的な通知を行うかどうかが発生し、同様の最終的
-------------------------------------------------- -------------------------------------------------- --------
XMLとプロキシクラスファイルをインスタンス化
ネイティブのみクラスメソッドは、テスト結果を切り開くの背後に配置された範囲の構成セクションに参加しません
三:設定セクション
図の2行目を指します。
構成エントリポイント範囲、及びセットフラグ(ID 最初のステップ図面に注釈エントリーポイントの範囲用に構成)
3番目の列の値は、ターゲット・オブジェクトのプロキシオブジェクトを強化する必要があります
4行目:事前通知
5行目:リア通知 返す対応するプロキシクラスの戻り値は、戻り値は、プロキシクラスのパラメータ名の同じ戻り値でなければなりません
6行目:周りのアドバイス
7行目:スローはNOTIFY 投げる例外名を捨てます
8行目:最終お知らせ