@AspectJベースのSpringでのAOP
@AspectJは、アスペクトをJava 5アノテーションが付けられた通常のJavaクラスとして宣言するスタイルを指します。 @AspectJサポートは、XMLスキーマベースの構成ファイル内に次の要素を含めることで有効になります。
また、アプリケーションのクラスパスに次のAspectJライブラリが必要です。 これらのライブラリは、AspectJインストールの「lib」ディレクトリにあります。それ以外の場合は、インターネットからダウンロードできます。
- aspectjrt.jar
- aspectjweaver.jar
- aspectj.jar
- aopalliance.jar
アスペクトを宣言する
アスペクトクラスは他の通常のBeanに似ており、次のように@Aspectで注釈が付けられることを除いて、他のクラスと同じようにメソッドとフィールドを持つことができます-
次のように、他のBeanと同様にXMLで構成されます-
ポイントカットを宣言する
- 対象のメソッド実行を正確に決定するポイントカット式。
- 名前と任意の数のパラメーターで構成されるポイントカット署名。 メソッドの実際の本体は無関係であり、実際には空である必要があります。
次の例では、パッケージcom.xyz.myapp.serviceの下のクラスで利用可能なすべてのメソッドの実行に一致する 'businessService’という名前のポイントカットを定義しています-
次の例では、com.finddevguidesパッケージの下のStudentクラスで使用可能なgetName()メソッドの実行と一致する「getname」という名前のポイントカットを定義しています。
アドバイスを宣言する
コードスニペットで指定されている@ \ {ADVICE-NAME}アノテーションを使用して、5つのアドバイスのいずれかを宣言できます。 これは、ポイントカット署名メソッドbusinessService()がすでに定義されていることを前提としています-
任意のアドバイスに対してポイントカットをインラインで定義できます。 以下は、アドバイスの前にインラインポイントカットを定義する例です-
@AspectJベースのAOPの例
@AspectJベースのAOPに関連する上記の概念を理解するために、いくつかのアドバイスを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を実行してSpringアプリケーションを作成します。
Steps | Description |
---|---|
1 | Create a project with a name SpringExample and create a package com.finddevguides under the *src *folder in the created project. |
2 | Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter. |
3 | Add Spring AOP specific libraries* aspectjrt.jar, aspectjweaver.jar and aspectj.jar *in the project. |
4 | Create Java classes* Logging*, Student and MainApp under the com.finddevguides package. |
5 | Create Beans configuration file Beans.xml under the src folder. |
6 | The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below. |
以下は Student.java ファイルの内容です
以下は MainApp.java ファイルの内容です
以下は設定ファイル Beans.xml です
ソースおよびBean構成ファイルの作成が完了したら、アプリケーションを実行しましょう。 すべてがあなたのアプリケーションでうまくいけば、それは次のメッセージを印刷します-