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