Springaop-quick-guide
Spring AOP-概要
Spring Frameworkの主要なコンポーネントの1つは、* Aspect Oriented Programming(AOP)*フレームワークです。 アスペクト指向プログラミングでは、プログラムロジックを「いわゆる懸念事項」と呼ばれる別個の部分に分解する必要があります。 アプリケーションの複数のポイントにまたがる機能は、横断的関心事と呼ばれます。 これらの*横断的な関心事*は、アプリケーションのビジネスロジックと概念的に分離されています。 ロギング、監査、宣言的トランザクション、セキュリティ、キャッシングなどの側面のさまざまな一般的な良い例があります。
OOPのモジュール性の重要な単位はクラスですが、AOPのモジュール性の単位は側面です。 依存性注入は、アプリケーションオブジェクトを相互に分離するのに役立ちますが、AOPは、影響を受けるオブジェクトから横断的な関心事を分離するのに役立ちます。 AOPは、Perl、.NET、Javaなどのプログラミング言語のトリガーのようなものです。
Spring AOPモジュールにより、インターセプターはアプリケーションをインターセプトできます。 たとえば、メソッドの実行時に、メソッドの実行前または実行後に機能を追加できます。
link:/cgi-bin/printpage.cgi [__印刷]
Spring AOP-環境設定
この章では、WindowsおよびLinuxベースのシステムでSpring AOPを設定するプロセスについて説明します。 Spring AOPは、複雑なセットアップ手順なしでいくつかの簡単な手順を実行するだけで、現在のJava環境およびMAVENと簡単にインストールおよび統合できます。 インストール中にユーザー管理が必要です。
システム要求
JDK | Java SE 2 JDK 1.5 or above |
Memory | 1 GB RAM (recommended) |
Disk Space | No minimum requirement |
Operating System Version | Windows XP or above, Linux |
Spring AOPをインストールする手順を見てみましょう。
ステップ1:Javaインストールを確認する
まず、システムにJava Software Development Kit(SDK)をインストールする必要があります。 これを確認するには、作業しているプラットフォームに応じて、次の2つのコマンドのいずれかを実行します。
Javaインストールが適切に行われている場合、Javaインストールの現在のバージョンと仕様が表示されます。 サンプル出力を次の表に示します。
Platform | Command | Sample Output |
---|---|---|
Windows |
Open command console and type −
a |
Javaバージョン「1.7.0_60」 Java(TM)SEランタイム環境(ビルド1.7.0_60-b19) Java Hotspot(TM)64ビットサーバーVM(ビルド24.60-b09、混合モード) |
Linux |
Open command terminal and type −
a |
Javaバージョン "1.7.0_25" JDKランタイム環境を開く(rhel-2.3.10.4.el6_4-x86_64) JDK 64ビットサーバーVMを開く(ビルド23.7-b01、混合モード) |
このチュートリアルの読者は、システムにJava SDKバージョン1.7.0_60がインストールされていることを前提としています。
Java SDKがない場合は、https://www.oracle.com/technetwork/java/javase/downloads/indexlから現在のバージョンをダウンロードし、インストールしてください。
ステップ2:Java環境を設定する
Javaがマシンにインストールされているベースディレクトリの場所を指すように、環境変数JAVA_HOMEを設定します。 例えば、
Sr.No. | Platform & Description |
---|---|
1 |
Windows JAVA_HOMEをC:\ ProgramFiles \ java \ jdk1.7.0_60に設定します |
2 |
Linux エクスポートJAVA_HOME =/usr/local/java-current |
Javaコンパイラの場所の完全パスをシステムパスに追加します。
Sr.No. | Platform & Description |
---|---|
1 |
Windows 文字列「C:\ Program Files \ Java \ jdk1.7.0_60 \ bin」をシステム変数Pathの最後に追加します。 |
2 |
Linux エクスポートPATH = $ PATH:$ JAVA_HOME/bin/ |
上記で説明したように、コマンドプロンプトからコマンド java -version を実行します。
ステップ3:Mavenアーカイブをダウンロードする
[[1]] 3.3.3をダウンロードします
OS | Archive Name |
---|---|
Windows | apache-maven-3.3.3-bin.zip |
Linux | apache-maven-3.3.3-bin.tar.gz |
Mac | apache-maven-3.3.3-bin.tar.gz |
ステップ4:Mavenアーカイブを抽出する
Maven 3.3.3をインストールするディレクトリにアーカイブを抽出します。 サブディレクトリapache-maven-3.3.3がアーカイブから作成されます。
OS | Location (can be different based on your installation) |
---|---|
Windows | C:\Program Files\Apache Software Foundation\apache-maven-3.3.3 |
Linux | /usr/local/apache-maven |
Mac | /usr/local/apache-maven |
ステップ5:Maven環境変数を設定する
M2_HOME、M2、MAVEN_OPTSを環境変数に追加します。
OS | Output |
---|---|
Windows |
Set the environment variables using system properties. M2_HOME = C:\ Program Files \ Apache Software Foundation \ apache-maven-3.3.3 M2 =%M2_HOME%\ bin MAVEN_OPTS = -Xms256m -Xmx512m |
Linux |
Open command terminal and set environment variables. export M2_HOME =/usr/local/apache-maven/apache-maven-3.3.3 export M2 = $ M2_HOME/bin export MAVEN_OPTS = -Xms256m -Xmx512m |
Mac |
Open command terminal and set environment variables. export M2_HOME =/usr/local/apache-maven/apache-maven-3.3.3 export M2 = $ M2_HOME/bin export MAVEN_OPTS = -Xms256m -Xmx512m |
ステップ6:Maven Binディレクトリの場所をシステムパスに追加する
次に、システムパスにM2変数を追加します。
OS | Output |
---|---|
Windows | Append the string ;%M2% to the end of the system variable, Path. |
Linux | export PATH = $M2:$PATH |
Mac | export PATH = $M2:$PATH |
ステップ7:Mavenのインストールを確認する
コンソールを開き、次の mvn コマンドを実行します。
OS | Task | Command |
---|---|---|
Windows | Open Command Console | c:\> mvn --version |
Linux | Open Command Terminal | $ mvn --version |
Mac | Open Terminal | machine:< joseph$ mvn --version |
最後に、上記のコマンドの出力を確認します。これは次のようになります-
OS | Output |
---|---|
Windows |
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30) Mavenホーム:C:\ Program Files \ Apache Software Foundation \ apache-maven-3.3.3 Javaバージョン:1.7.0_75、ベンダー:Oracle Corporation Javaホーム:C:\ Program Files \ Java \ jdk1.7.0_75 \ jre デフォルトロケール:en_US、プラットフォームエンコーディング:Cp1252 |
Linux |
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30) Mavenホーム:/usr/local/apache-maven/apache-maven-3.3.3 Javaバージョン:1.7.0_75、ベンダー:Oracle Corporation Javaホーム:/usr/local/java-current/jdk1.7.0_75/jre |
Mac |
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17:27:37+05:30) Mavenホーム:/usr/local/apache-maven/apache-maven-3.3.3 Javaバージョン:1.7.0_75、ベンダー:Oracle Corporation Javaホーム:/Library/Java/Home/jdk1.7.0_75/jre |
ステップ8-Eclipse IDEのセットアップ
このチュートリアルのすべての例は、Eclipse IDEを使用して作成されています。 そのため、最新バージョンのEclipseをマシンにインストールすることをお勧めします。
Eclipse IDEをインストールするには、https://www.eclipse.org/downloads/から最新のEclipseバイナリをダウンロードします。 インストールをダウンロードしたら、バイナリ配布物を便利な場所に解凍します。 たとえば、WindowsのC:\ eclipse、またはLinux/Unixの/usr/local/eclipseで、最後にPATH変数を適切に設定します。
Eclipseは、Windowsマシンで次のコマンドを実行することで開始できます。または、eclipse.exeをダブルクリックできます。
Eclipseは、Unix(Solaris、Linuxなど)マシンで次のコマンドを実行することで起動できます-
正常に起動した後、すべてが正常であれば、次の結果が表示されます-
この最後の手順が完了したら、次の章で説明する最初のAOPの例に進む準備ができています。
Spring 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の例で見るように、式またはパターンを使用してPointCutsを指定できます。 |
5 |
Introduction 導入により、新しいメソッドまたは属性を既存のクラスに追加できます。 |
6 |
Target object 1つ以上の側面によってアドバイスされているオブジェクト。 このオブジェクトは常にプロキシオブジェクトです。 推奨オブジェクトとも呼ばれます。 |
7 |
Weaving ウィービングは、アスペクトを他のアプリケーションタイプまたはオブジェクトとリンクして、推奨オブジェクトを作成するプロセスです。 これは、コンパイル時、ロード時、または実行時に実行できます。 |
Spring AOP-アドバイスの種類
Springの側面は、次の表に示す5種類のアドバイスで機能します。
Sr.No. | Advice & Description |
---|---|
1 |
before メソッドを実行する前にアドバイスを実行してください。 |
2 |
after 結果に関係なく、メソッドの実行後にアドバイスを実行します。 |
3 |
after-returning メソッドが正常に完了した場合にのみ、メソッドの実行後にアドバイスを実行します。 |
4 |
after-throwing メソッドが例外をスローして終了した場合にのみ、メソッドの実行後にアドバイスを実行します。 |
5 |
around アドバイスされたメソッドが呼び出される前後にアドバイスを実行します。 |
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を定義する例です。
Spring AOP-XMLベースのアプリケーション
この章では、Spring AOP Frameworkを使用して実際のAOPアプリケーションを作成します。 Spring-WSフレームワークを使用して最初の例の記述を開始する前に、link:/springaop/springaop_environment [Spring Web Services-Environment Setup]の章で説明されているように、Spring AOP環境が適切に設定されていることを確認する必要があります。
次に、コンソールを使用した簡単なSpring AOPアプリケーションの作成に進み、AOPの概念を示します。
プロジェクトを作成する
ステップ1 *-コマンドコンソールを開き、C:\ MVNディレクトリに移動して、次の *mvn コマンドを実行します。
Mavenは処理を開始し、完全なJavaアプリケーションプロジェクト構造を作成します。
- ステップ2 *-C:/MVNディレクトリに移動します。 studentという名前の(artifactIdで指定された)Javaアプリケーションプロジェクトが作成されます。 POM.xmlを更新して、Spring-AOP依存関係を含めます。 MainApp.java、Student.java、およびLogging.javaファイルを追加します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
ステップ3 *- *src> main> resources フォルダーの下に構成ファイル Beans.xml を追加します。
ステップ4 *-コマンドコンソールを開き、C:\ MVNディレクトリに移動して、次の *mvn コマンドを実行します。
Mavenは必要なライブラリの処理とダウンロードを開始します。
Eclipseでプロジェクトをインポートする
- ステップ1 *-Eclipseを開きます。
- ステップ2 *-*ファイル→インポート→*オプションを選択します。
- ステップ3 *-Mavenプロジェクトオプションを選択します。 [次へ]ボタンをクリックします。
- ステップ4 *-学生プロジェクトがMavenを使用して作成されたプロジェクトの場所を選択します。
- ステップ5 *-[完了]ボタンをクリックします。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-XMLベースのPointCut
参加ポイント
JoinPointは、AOPアスペクトをプラグインできるアプリケーション内のポイントを表します。 また、Spring AOPフレームワークを使用してアクションが実行されるアプリケーション内の実際の場所であるとも言えます。 次の例を考慮してください-
- パッケージに含まれるすべてのメソッドクラス。
- クラスの特定のメソッド。
ポイントカット
PointCutは、アドバイスを実行する必要がある1つ以上のJoinPointのセットです。 AOPの例で見るように、式またはパターンを使用してPointCutsを指定できます。 Springでは、PointCutは特定のJoinPointを使用してアドバイスを適用するのに役立ちます。 次の例を考慮してください-
- 式= "execution(* com.finddevguides。。(..))"
- 式= "execution(* com.finddevguides.Student.getName(..))"
構文
どこで、
- adviceClass -アドバイスメソッドを含むクラスの参照
- PointCut-id -PointCutのID
- * execution(expression)*-アドバイスが適用されるメソッドをカバーする式。
JoinPointおよびPointCutに関連する上記の概念を理解するために、PointCutsのいくつかを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
ソースおよびBean構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
上記で定義された<aop:pointcut>は、パッケージcom.finddevguidesで定義されたすべてのメソッドを選択します。 特定のメソッドの前後にアドバイスを実行したい場合、PointCutの定義の星印(*)を実際のクラス名とメソッド名に置き換えることにより、PointCutを定義して実行を絞り込むことができます。 以下は、概念を示すために変更されたXML構成ファイルです。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-XMLベースのアドバイス
構文
どこで、
- PointCut-id -PointCutのID。
- methodName -呼び出された関数の前に呼び出される関数のメソッド名。
Before Adviceに関連する上記の概念を理解するために、Before Adviceを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-XMLベースのアドバイス後
構文
どこで、
- PointCut-id -PointCutのID。
- methodName -呼び出された関数の後に呼び出される関数のメソッド名。
アフターアドバイスに関連する上記の概念を理解するために、アフターアドバイスを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションに問題がなければ、次のメッセージが出力されます。
Spring AOP-アドバイスを返した後のXMLベース
構文
どこで、
- PointCut-id -PointCutのID。
- methodName -呼び出された関数が正常に戻った後に呼び出される関数のメソッド名。
After Returning Adviceに関連する上記の概念を理解するために、After Returning adviceを実装する例を記述しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-投球アドバイス後のXMLベース
構文
どこで、
- PointCut-id -PointCutのID。
- ex -スローされる例外。
- methodName -呼び出された関数が例外をスローして終了したときに呼び出される関数のメソッド名。
アフタースローアドバイスに関連する上記の概念を理解するために、アフタースローアドバイスを実装する例を記述しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-XMLベースのアラウンドアドバイス
構文
どこで、
- PointCut-id -PointCutのID。
- methodName -呼び出された関数の前に呼び出される関数のメソッド名。
アラウンドアドバイスに関連する上記の概念を理解するために、アラウンドアドバイスを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-注釈ベースのアプリケーション
注釈ベースの構成を使用してアドバイスを実装する例を作成しましょう。 このために、機能するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-注釈ベースのPointCut
JoinPoint
JoinPointは、AOPアスペクトをプラグインできるアプリケーション内のポイントを表します。 また、Spring AOPフレームワークを使用してアクションが実行されるアプリケーション内の実際の場所であるとも言えます。 次の例を考慮してください-
- パッケージに含まれるすべてのメソッドクラス。
- クラスの特定のメソッド。
ポイントカット
PointCutは、アドバイスを実行する1つ以上のJoinPointのセットです。 AOPの例で見るように、式またはパターンを使用してPointCutsを指定できます。 Springでは、PointCutは特定のJoinPointを使用してアドバイスを適用するのに役立ちます。 次の例を考慮してください-
- @PointCut( "execution(* com.finddevguides。。(..))")
- @PointCut( "execution(* com.finddevguides.Student.getName(..))")
構文
どこで、
- @ Aspect -クラスをアドバイスメソッドを含むクラスとしてマークします。
- @ PointCut -関数をPointCutとしてマークする
- * execution(expression)*-アドバイスが適用されるメソッドをカバーする式。
JoinPointおよびPointCutに関連する上記の概念を理解するために、PointCutsのいくつかを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
上記で定義された@Pointcutは、式を使用して、パッケージcom.finddevguidesで定義されたすべてのメソッドを選択します。 @Beforeアドバイスでは、上記で定義したPointCutをパラメーターとして使用します。 上記のPointCutでカバーされるすべてのメソッドの前に、事実上beforeAdvice()メソッドが呼び出されます。
Spring AOP-アドバイスに基づく注釈
構文
どこで、
- @ PointCut -関数をPointCutとしてマークする
- * execution(expression)*-アドバイスが適用されるメソッドをカバーする式。
- @ Before -PointCutでカバーされるメソッドの前に実行されるアドバイスとして関数をマークします。
@Before Adviceに関連する上記の概念を理解するために、@ Before Adviceを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
上記で定義された@Pointcutは、式を使用して、パッケージcom.finddevguidesのクラスで定義されたメソッドgetAge()を選択します。 @Afterアドバイスでは、上記で定義したPointCutをパラメーターとして使用します。 事実上、afterAdvice()メソッドは、上記のPointCutでカバーされるすべてのメソッドの前に呼び出されます。
Spring AOP-アドバイスに基づいた注釈ベース
構文
どこで、
- @ PointCut -関数をPointCutとしてマークする
- * execution(expression)*-アドバイスが適用されるメソッドをカバーする式。
- @ After -PointCutでカバーされるメソッドの前に実行されるアドバイスとして関数をマークします。
@After Adviceに関連する上記の概念を理解するために、@ After Adviceを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
上記で定義された@Pointcutは、式を使用して、パッケージcom.finddevguidesのクラスで定義されたメソッドgetAge()を選択します。 @Afterアドバイスでは、上記で定義したPointCutをパラメーターとして使用します。 事実上、afterAdvice()メソッドは、上記のPointCutでカバーされるすべてのメソッドの前に呼び出されます。
Spring AOP-アドバイスを返した後の注釈ベース
構文
どこで、
- @ AfterReturning -メソッドが正常に戻った場合、PointCutでカバーされるメソッドの前に実行されるアドバイスとして関数をマークします。
- PointCut -関数を選択する式を提供します
- * execution(expression)*-アドバイスが適用されるメソッドをカバーする式。
- returning -返される変数の名前。
@AfterReturning Adviceに関連する上記の概念を理解するために、@ AfterReturning Adviceを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-アドバイスを投げた後の注釈ベース
構文
どこで、
- @ AfterThrowing -メソッドが例外をスローする場合、PointCutでカバーされるメソッドの前に実行されるアドバイスとして関数をマークします。
- PointCut -関数を選択する式を提供します。
- * execution(expression)*-アドバイスが適用されるメソッドをカバーする式。
- throwing -返される例外の名前。
@AfterThrowing Adviceに関連する上記の概念を理解するために、@ AfterThrowing Adviceを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-注釈ベースのアドバイス
構文
どこで、
- @ PointCut -関数をPointCutとしてマークする
- * execution(expression)*-アドバイスが適用されるメソッドをカバーする式。
- @ Around -PointCutでカバーされるメソッドの前に実行されるアドバイスとして関数をマークします。
@Around Adviceに関連する上記の概念を理解するために、@ Around Adviceを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-プロキシ
これまでのところ、 <aop:config> または <aop:aspectj-autoproxy> を使用してアスペクトを宣言しました。 プログラムでプロキシを作成したり、プロキシオブジェクトを使用してプログラムでアスペクトを呼び出したりできます。
構文
どこで、
- AspectJProxyFactory -プロキシオブジェクトを作成するファクトリクラス。
- Logging.class -アドバイスを含むアスペクトのクラス。
- 学生-アドバイスするビジネスクラス。
プロキシに関する上記の概念を理解するために、プロキシを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。
Spring AOP-カスタム注釈
PointCut式によると、アドバイスが意図されていない他のBeanに適用される場合があります。 たとえば、次の式を考えます。
getAge()メソッドを使用して新しいSpring Beanが追加され、意図しない場合でもアドバイスが適用され始めます。 これを実現するために、カスタム注釈を作成し、アドバイスが適用されるメソッドに注釈を付けることができます。
@Before Adviceに関連する上記の概念を理解するために、@ Before Adviceを実装する例を作成しましょう。 少しアドバイスをしてサンプルを作成するには、動作するEclipse IDEを用意し、次の手順を使用してSpringアプリケーションを作成します。
Step | Description |
---|---|
1 | Update the project Student created under chapter Spring AOP - Application. |
2 | Update the bean configuration and run the application as explained below. |
以下は Logging.java ファイルの内容です。 これは実際にはアスペクトモジュールのサンプルであり、さまざまなポイントで呼び出されるメソッドを定義します。
以下は Loggable.java ファイルの内容です-
以下は Student.java ファイルの内容です。
以下は MainApp.java ファイルの内容です。
以下は、構成ファイル Beans.xml です。
プロジェクトを実行
ソースファイルと構成ファイルの作成が完了したら、アプリケーションを実行します。 アプリケーションでMainApp.javaを右クリックし、「Javaアプリケーションとして実行」コマンドを使用します。 アプリケーションで問題がなければ、次のメッセージが出力されます。