Springaop-implementations
Spring AOP-実装
Springは、カスタムアスペクトを実装するために* @ AspectJアノテーションスタイル*アプローチと*スキーマベース*アプローチをサポートしています。
XMLスキーマベース
アスペクトは、XMLベースの構成とともに通常のクラスを使用して実装されます。
このセクションで説明されているAOP名前空間タグを使用するには、次のように説明されている春のAOPスキーマをインポートする必要があります-
アスペクトを宣言する
ここでは、前の章で見たように、他のSpring Beanと同じように「aBean」が構成され、依存関係が注入されます。
PointCutの宣言
次の例では、com.finddevguidesパッケージのStudentクラスで使用可能なgetName()メソッドの実行と一致する「businessService」という名前のPointCutを定義しています。
アドバイスの宣言
次のように<aop:\ {ADVICE NAME}>要素を使用して、<aop:aspect>内で5つのアドバイスのいずれかを宣言できます。
同じ doRequiredTask または異なるアドバイスに異なるメソッドを使用できます。 これらのメソッドは、アスペクトモジュールの一部として定義されます。
@AspectJベース
@AspectJは、アスペクトをJava 5アノテーションが付けられた通常のJavaクラスとして宣言するスタイルを指します。 @AspectJは、アスペクトをJava 5アノテーションが付けられた通常のJavaクラスとして宣言するスタイルを指します。 @AspectJサポートは、XMLスキーマベースの構成ファイル内に次の要素を含めることで有効になります。
アスペクトを宣言する
アスペクトクラスは他の通常のBeanと同様であり、次のように@Aspectアノテーションが付けられることを除いて、他のクラスと同様にメソッドとフィールドを持つことができます。
次のように、他のBeanと同様にXMLで構成されます。
PointCutの宣言
- 対象のメソッド実行を正確に決定するPointCut式。
- 名前と任意の数のパラメーターで構成されるPointCut署名。 メソッドの実際の本体は無関係であり、実際には空である必要があります。
次の例では、パッケージcom.xyz.myapp.serviceの下のクラスで使用可能なすべてのメソッドの実行に一致する「businessService」という名前のPointCutを定義します。
次の例では、パッケージcom.finddevguidesのStudentクラスで使用可能なgetName()メソッドの実行と一致する「getname」という名前のPointCutを定義しています。
アドバイスの宣言
以下に示す@ \ {ADVICE-NAME}アノテーションを使用して、5つのアドバイスのいずれかを宣言できます。 これは、PointCut署名メソッドbusinessService()が既に定義されていることを前提としています。
任意のアドバイスに対してPointCutインラインを定義できます。 以下は、アドバイスの前にインラインPointCutを定義する例です。