English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
アスペクト指向プログラミング(AOP)はある意味でOOPの補完であり、モジュール化の機能も提供するが、モジュール化の鍵となるユニットはクラスではなく、側面です。
AOPを通じてプログラムのロジックを異なる部分(関心点と呼ばれる)に分ける。これは、 跨领域关注点来てモジュール化を向上させます。
来てモジュール化を向上させます。-crossアプリケーションの全体に影響を与える注目点は、可能な限り一箇所のコードに集中するべきであり、例えばトランザクション管理、認証、ログ記録、セキュリティなどです。
なぜAOPを使用するか?
それは実際のロジックの前に、後ろ、または周りに追加の注目点を動的に追加できる可插挿な方法を提供します。例えば、あるクラスには10以下のように、方法があります:
class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} }
この方法、mから始まる5この方法、nから始まる2この方法、pから始まる3この方法
状況を理解する私はログをメンテナンスし、通知を送信する必要があります。
AOPがない問題mで始まるメソッドからメソッドを呼び出すことができます(ログのメンテナンスと通知の送信)。この場合、すべてを使用する必要があります。5この方法でコードを書きます。
しかし、顧客が後に「通知を送信する必要はありません」と言った場合、すべてのメソッドを変更する必要があります。これにより、メンテナンス問題が発生します。
AOPソリューション私たちはメソッドからメソッドを呼び出す必要はありません。今では、クラスのメソッドで他の注目点を定義できます。例えば、ログのメンテナンス、通知の送信などです。そのエントリはXMLファイルで指定されます。
将来的には、顧客が通知プログラム機能を削除すると言った場合、XMLファイルでの変更のみが必要です。そのため、AOPのメンテナンスは簡単です。
以下の状況でAOPが主に使用されます:
宣言型の企業サービス、例えば宣言型トランザクション管理を提供します。 ユーザーがカスタムアスペクトを実装できるようにします。
AOPの概念と用語は以下の通りです:
Join point Advice Pointcut 導入 ターゲットオブジェクト アスペクト インターセプタ AOP プロキシ Weaving
Join pointはプログラム内のどこかの点、例えばメソッドの実行、例外処理、フィールドのアクセスなどです。Springはメソッドの実行Join pointのみをサポートします。
Adviceは特定のJoin pointで実行される操作を表します。異なる種類のAdviceがあります:
Before Advice: それはJoin pointの前に実行されます。 After Returning Advice: ジョインポイントが正常に完了した後に実行されます。 After Throwing Advice: メソッドが例外を発生させて終了した場合に実行されます。 After (finally) Advice: Join pointが正常に戻り値を返す場合や例外を返す場合でも、Join pointの後に実行されます。 Around Advice: それはJoin pointの前後で実行されます。
それはAOPの表現言語であり、Join pointと一致します。
これはアドバイザブルオブジェクトに新しいインターフェースを導入する意味です。これは、どのアドバイザブルオブジェクトにも新しいインターフェースを導入することができます。
これは1つまたは複数のアドバイザブルアスペクトを持つオブジェクトです。Springでは、これもプロキシオブジェクトと呼ばれます。Spring AOPは実行時代理を使用して実現されています。
これはアドバイザブル、ジョインポイントなどが含まれるクラスです。
これは単一のアドバイザブルアスペクトのみを含むアスペクトです。
これはAOP フレームワークが作成するアスペクトコントラクトを実現するために使用されます。Spring フレームワークでは、これがJDK ダイナミックプロキシーやCGLIB プロキシーになるでしょう。
これはアスペクトを他のアプリケーションタイプやオブジェクトに結びつけて、アドバイザブルオブジェクトを作成するプロセスです。織り付けはコンパイル時、ロード時、または実行時に完了できます。Spring AOPは実行時に織り付けを行います。
AOP 実現は以下で提供されています:
AspectJ SpringAOP JBoss AOP
Spring AOPは以下の3つの方法で使用できますが、広く使用されている方法はSpring AspectJ コメントスタイルです。以下はSpring AOPの使用例を示しています。3以下の方法:
Springを使用して1.2旧スタイル(DTDに基づいて)(Springで)3(中にもサポートされています) AspectJ コメントによるスタイル Spring XML 設定によるスタイル(パターンに基づいて)