アスペクト指向プログラミング (AOP) はモジュール性も提供するという意味で OOP を補完します。しかし、モジュール性の重要な単位はクラスではなくアスペクトです。
AOP は、プログラム ロジックを個別の部分 (コンサーンと呼ばれる) に分割します。モジュール性を高めるために使用されます。 横断的な懸念 。
あ 横断的な懸念 これはアプリケーション全体に影響を与える可能性がある問題であり、トランザクション管理、認証、ロギング、セキュリティなどのコードを可能な限り 1 か所に集中させる必要があります。
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つの方法があります。
シナリオを理解する m から始まるメソッドを呼び出した後、ログを維持して通知を送信する必要があります。
AOP がない場合の問題 m で始まるメソッドから (ログを保持し、通知を送信する) メソッドを呼び出すことができます。このようなシナリオでは、5 つのメソッドすべてでコードを記述する必要があります。
ただし、クライアントが今後通知を送信する必要がないと言った場合は、すべての方法を変更する必要があります。メンテナンスの問題につながります。
AOPによるソリューション メソッドからメソッドを呼び出す必要はありません。これで、クラスのメソッドでログの維持、通知の送信などの追加の懸念事項を定義できるようになりました。そのエントリは xml ファイルで指定されます。
将来、クライアントが通知機能を削除するように要求した場合、xml ファイルのみを変更する必要があります。したがって、AOP ではメンテナンスが簡単です。
gimpでjpegとして保存
AOP はどこで使用されますか?
AOP は主に次の場合に使用されます。
- 宣言型トランザクション管理などの宣言型エンタープライズ サービスを提供します。
- これにより、ユーザーはカスタム アスペクトを実装できるようになります。
AOP の概念と用語
AOP の概念と用語は次のとおりです。
- 結合点
- アドバイス
- ポイントカット
- 導入
- 対象オブジェクト
- 側面
- インターセプター
- AOPプロキシ
- 機織り
結合点
ジョインポイントは、メソッド実行、例外処理、フィールドアクセスなど、プログラム内の任意のポイントです。Spring はメソッド実行ジョインポイントのみをサポートします。
アドバイス
アドバイスは、特定の結合ポイントでアスペクトによって実行されるアクションを表します。さまざまな種類のアドバイスがあります。
- アドバイスの前に : 結合ポイントの前で実行されます。
- アドバイスを返した後 : ジョイントポイントが正常に完了した後に実行されます。
- 投げた後のアドバイス : 例外をスローしてメソッドが終了した場合に実行されます。
- (最終的に)アドバイス後 : ジョインポイント終了後、ジョインポイント終了の正常終了か例外復帰かに関係なく実行されます。
- 周囲のアドバイス : ジョインポイントの前後で実行されます。
ポイントカット
ジョインポイントに対応したAOPの表現言語です。
導入
これは、型に追加のメソッドとフィールドを導入することを意味します。これにより、推奨されたオブジェクトに新しいインターフェイスを導入できます。
対象オブジェクト
それはオブジェクト、つまり 1 つ以上の側面からアドバイスされるものです。 Spring AOP はランタイム プロキシを使用して実装されるため、Spring ではプロキシ オブジェクトとも呼ばれます。
側面
アドバイスやジョインポイントなどが含まれるクラスです。
インターセプター
たった一つのアドバイスが含まれるアスペクトです。
AOPプロキシ
AOP フレームワークによって作成されたアスペクト コントラクトを実装するために使用されます。これは、Spring Framework の JDK ダイナミック プロキシまたは CGLIB プロキシになります。
機織り
これは、アスペクトを他のアプリケーション タイプまたはオブジェクトとリンクして、推奨オブジェクトを作成するプロセスです。ウィービングはコンパイル時、ロード時、または実行時に実行できます。 Spring AOP は実行時にウィービングを実行します。
入力信号がありません
AOPの実装
AOP 実装は以下によって提供されます。
- アスペクトJ
- 春のAOP
- JBoss AOP
春のAOP
Spring AOPは以下の3通りの方法で利用できます。しかし、広く使用されているアプローチは Spring AspectJ Annotation Style です。 Spring AOP を使用する 3 つの方法を以下に示します。
- Spring1.2 まで 旧スタイル (dtd ベース) (Spring3 でもサポート)
- AspectJ アノテーションスタイルによる
- Spring XML構成形式(スキーマベース)による
参考リンク
スプリング ソース AOPSpring ソース AOP API
ウィキペディア