Spring-aop-with-spring
Spring Frameworkを使用したAOP
Spring Frameworkの重要なコンポーネントの1つは、*アスペクト指向プログラミング(AOP)*フレームワークです。 アスペクト指向プログラミングでは、プログラムロジックをいわゆる懸念と呼ばれる個別の部分に分解する必要があります。 アプリケーションの複数のポイントにまたがる機能は「横断的関心事」と呼ばれ、これらの横断的関心事は概念的にはアプリケーションのビジネスロジックから分離されています。 ロギング、監査、宣言的トランザクション、セキュリティ、キャッシングなどの側面のさまざまな一般的な良い例があります。
OOPのモジュール性の重要な単位はクラスですが、AOPのモジュール性の単位は側面です。 依存性注入は、アプリケーションオブジェクトを相互に分離するのに役立ち、AOPは、影響を受けるオブジェクトから横断的な関心事を分離するのに役立ちます。 AOPは、Perl、.NET、Javaなどのプログラミング言語のトリガーのようなものです。
Spring AOPモジュールは、アプリケーションをインターセプトするインターセプターを提供します。 たとえば、メソッドの実行時に、メソッドの実行前または実行後に機能を追加できます。
AOPの用語
AOPでの作業を開始する前に、AOPの概念と用語を理解しましょう。 これらの用語は、Springに固有のものではなく、AOPに関連しています。
Sr.No | Terms & Description |
---|---|
1 |
Aspect これは、横断的な要件を提供する一連のAPIを備えたモジュールです。 たとえば、ロギングモジュールは、ロギングのAOPアスペクトと呼ばれます。 アプリケーションは、要件に応じて任意の数の側面を持つことができます。 |
2 |
Join point これは、AOPアスペクトをプラグインできるアプリケーション内のポイントを表します。 また、Spring AOPフレームワークを使用してアクションが実行されるアプリケーション内の実際の場所であるとも言えます。 |
3 |
Advice これは、メソッドの実行前または実行後に実行される実際のアクションです。 これは、Spring AOPフレームワークによるプログラム実行中に呼び出される実際のコードです。 |
4 |
Pointcut これは、アドバイスを実行する1つ以上の結合ポイントのセットです。 AOPの例で見るように、式またはパターンを使用してポイントカットを指定できます。 |
5 |
Introduction 導入により、新しいメソッドまたは属性を既存のクラスに追加できます。 |
6 |
Target object 1つ以上の側面によってアドバイスされているオブジェクト。 このオブジェクトは、常にプロキシオブジェクトであり、推奨オブジェクトとも呼ばれます。 |
7 |
Weaving ウィービングは、アスペクトを他のアプリケーションタイプまたはオブジェクトとリンクして、推奨オブジェクトを作成するプロセスです。 これは、コンパイル時、ロード時、または実行時に実行できます。 |
アドバイスの種類
春の側面は、次のように言及された5種類のアドバイスで動作することができます-
Sr.No | Advice & Description |
---|---|
1 |
before メソッドを実行する前にアドバイスを実行してください。 |
2 |
after 結果に関係なく、メソッドの実行後にアドバイスを実行します。 |
3 |
after-returning メソッドが正常に完了した場合にのみ、メソッドの実行後にアドバイスを実行します。 |
4 |
after-throwing メソッドが例外をスローして終了する場合にのみ、メソッド実行後にアドバイスを実行します。 |
5 |
around アドバイスされたメソッドが呼び出される前後にアドバイスを実行します。 |
カスタムアスペクトの実装
Springは、カスタムアスペクトを実装するために* @ AspectJアノテーションスタイル*アプローチと*スキーマベース*アプローチをサポートしています。 これら2つのアプローチは、次のセクションで詳細に説明されています。
Sr.No | Approach & Description |
---|---|
1 |
アスペクトは、XMLベースの構成とともに通常のクラスを使用して実装されます。 |
2 |
@AspectJは、アスペクトをJava 5アノテーションが付けられた通常のJavaクラスとして宣言するスタイルを指します。 |