◀ 14. SpringにおけるAOPの使い方 ▶
本稿ではSpring FrameworkにおけるAOP(Acpect Oriented Programming)の使用方法を説明します。
AOPとは
AOPとは共通的な処理をAOPクラスにまとめて、あるクラスの特定のメソッドの開始前や開始後にその共通的な処理を実行させることが出来る仕組みです。
AOPのライブラリをpom.xmlに記述する
AOPを使用するためにはライブラリが必要です。
以下を参考にpom.xmlに記載してビルドしましょう。※Spring Bootでない場合。Spring Bootの場合は後述。
<!-- AOP --> |
※注意※ spring-aopのバージョンを3.1以上にすると「AnnotationAwareAspectJAutoProxyCreator」が見つからないエラーが発生する。情報求む。
Spring Bootの場合は以下の記述のみでOK。
<!-- AOP --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> |
AOPを使用する宣言
※Spring Bootの場合は不要
いくつか方法があるが、シンプルなものを紹介。
適当なコンフィグクラスを作成して以下の内容を記述する。(どこかしらのクラスでAOPを使用する宣言をする必要がある)
import org.springframework.context.annotation.ComponentScan; @Configuration } |
※@ComponentScanのパッケージ名は環境に合わせてください。
AOPクラスの作成
@Aspectアノテーションを付与すればAOPのクラスとして認識される。。
@Aspect @Before("execution(* com.example.springmvc2.*.*(..))") @After("execution(* com.example.springmvc2.*.*(..))") |
@Beforeはメソッドが実行される前に処理を実行する。
@Afterはメソッドが実行された後に処理を実行する。
executeはAOPを実行する条件を指定できる。※詳しくは後述
JoinPointクラスのgetSignatureメソッドを使用すると、実行したメソッドのオブジェクト情報が取得できる。
適当な本処理のメソッドを実行した際の出力結果は以下の通り。
Method Start:String com.example.springmvc2.HomeController.home(Locale,Model) 本処理 Method End:String com.example.springmvc2.HomeController.home(Locale,Model) |
AOPクラスに付与するアノテーション一覧
@Before:メソッドの実行前に処理を実行する。
@After:メソッドの実行後に処理を実行する。
@AfterReturning:メソッドの実行後に処理を実行する。(正常終了した場合のみ)
@AfterThrowing:例外がスローされた場合のみ処理を実行する。
@Around:メソッドの実行タイミングを自分で指定し、前後に処理を記述する。
executeの条件指定
execute内の記述でAOPの起動条件を指定できる。
@Before("execution(* com.example.springmvc2.*.*(..))") |
左から順に、
戻り値の型、パッケージ、クラス名、メソッド名、メソッド引数
となる。
*はワイルドカード。
※executeの例をもう少し具体的に記載するべし。どなたかよろしくお願いします。
- インストール(eclipseプラグイン)
- クイックスタート
- プロジェクトの作成
- Spring Bootプロジェクトの作成
- Spring Bootプロジェクトの実行
- Spring BootでHello World!
- アノテーション一覧
- DB接続設定からエンティティおよびリポジトリの作成、値の取得まで(JPA編)
- DB接続設定や値の取得(JdbcTemplate編)
- ビューから値をモデルに格納しコントローラーで受け取る方法
- コントローラーにてモデルに値を格納してビューに渡す方法
- テンプレートエンジン
- ModelとModelAndViewの違い
- classpath: 内部ファイルの読み込み
- file: 外部ファイルの読み込み
- CSVファイルアップロード方法(Ajax)
- CSVファイルダウンロード方法(Ajax)
- Spring Bootプロジェクトのビルドと本番環境へのデプロイ方法(内部tomcat使用)
- Application.propertiesの環境依存設定の分割方法
- JPAにおけるEntityManagerの取得方法
- JPAにおけるjava.sql.Connectionの取得方法
- エラー一覧
- jarの引数を受け取る方法
- Spring BootでGmailからメール送信
- 複数のDBに接続する設定(Spring Boot & JPA編)
- ポート番号の変更
- Basic認証の実装と特定のURLに限定する方法
- Spring SecurityのBasic認証の無効化
- 独自のエラーページを定義する方法
- プロパティファイルの値やjar実行時の引数を取得する方法
人気ページ
最近更新/作成されたページ
- dasdsa (2022-11-13 07:57:24)
- Sydney top independent escorts (2022-11-13 07:56:58)
- 'include' is not defined (2022-06-09 22:05:10)
- 【django】ログイン 認証機能 (2022-06-06 14:30:24)
- [Dockerエラー] WSL 2 installation is incomplete. (2022-06-02 15:34:14)
- 【Laravelエラー】does not comply with psr-4 autoloading standard. Skipping. (2021-11-28 18:13:59)
- 複数のデータベースに接続する方法 (2021-11-16 12:58:24)
- SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~ (2021-11-07 07:19:55)
- 【Laravelエラー】Invalid request (Unsupported SSL request) (2021-11-01 04:19:34)
- 【Laravelエラー】Database hosts array is empty. (2021-10-04 00:01:48)
最近コメントのあったページ
- 【Spring Boot (JPA編)】DB接続設定からエンティティおよびリポジトリの作成、値の取得まで (2023-02-02 23:24:30)
- 【Spring Boot (JPA編)】DB接続設定からエンティティおよびリポジトリの作成、値の取得まで (2023-02-02 22:04:19)
- 【Spring】file: 外部ファイルの読み込み (2023-02-02 21:21:47)
- ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。org.apache.tomcat.InstanceManager のクラス・ファイルが見つかりません。ビルド・パスを修正... (2023-02-02 21:06:05)
- jQueryにおける値と要素の削除 (2023-02-02 20:48:16)
- 【Spring Boot (JPA編)】DB接続設定からエンティティおよびリポジトリの作成、値の取得まで (2023-02-02 20:43:41)
- 【Spring】@Columnアノテーションとは (2023-02-02 20:36:01)
- 型 org.apache.tomcat.InstanceManager を解決できません。必要な .class ファイルから間接的に参照されています (2023-02-02 20:29:20)
- 【Spring Boot (JPA編)】DB接続設定からエンティティおよびリポジトリの作成、値の取得まで (2023-02-02 20:01:26)
- 【Spring Boot (JPA編)】DB接続設定からエンティティおよびリポジトリの作成、値の取得まで (2023-02-02 19:58:03)
最近の質問
- 質問です (2020-02-20 12:19:36)
- フリーランスの単価って高いですか? (2020-02-12 19:56:16)
- 情報系のaoを受けるつもりなんですが何かおすすめのソフトはありますか? (2020-02-12 19:54:22)
- test3 (2020-02-08 23:50:54)
- セレクトボックスのCSSのcontentで三角の部分が押せない (2019-07-03 13:06:10)
- GCPのwp-config.phpでpermission denied (2019-06-05 20:04:08)
- Spring FrameworkのEntityのカラム名の大文字小文字、アンスコについて (2019-02-01 07:13:49)
- PHP(Laravel)からPythonのプログラムを呼び出したいのですがどうすればよいでしょうか。 (2018-12-06 06:26:57)
- djangoを本番環境にデプロイしたいのですがどのレンタルサーバー or VPSサーバーがよいですか (2018-12-01 12:04:18)
- Django administrationのUsernameとPasswordについて (2018-11-30 11:55:20)
- Google Adsenseでアダルトコンテンツと誤認されてしまいました。 (2018-09-09 17:15:36)
- Google MapsをUnityで使用する方法&料金 (2018-08-28 02:37:26)
- Amazon PA-APIのSort=salesrankが効かない (2018-07-21 08:54:25)
- 楽観ロックと悲観ロックの違い (2018-01-11 05:05:33)
- レンタルサーバーって沢山ありますけどどこがいいでしょうか?AWSってどうなんですか? (2018-01-09 10:03:20)
- ディープラーニングのライブラリってどれがオススメですか? (2018-01-06 05:15:40)
- Webスクレイピングってどこまでが違法なんでしょうか? (2018-01-06 05:09:08)
- 人工知能(AI)、機械学習、ディープラーニングの違い (2018-01-06 02:40:44)
コメントを削除してもよろしいでしょうか?
No.549 |
guest
| 2023-01-28 08:48:10
Dear itlibra.com owner, You always provide valuable information.No.548 |
guest
| 2023-01-20 14:06:37
Hi itlibra.com Administrator, exact below: <a href="http://695example695.com" rel="nofollow">Link Text</a>No.547 |
guest
| 2022-12-30 16:13:03
<a href="https://www.hydroxychloroquinex.com/">aralen pill</a>No.546 |
guest
| 2022-12-27 01:26:40
500mg aralen <a href="http://hydroxychloroquinex.com/">http://hydroxychloroquinex.com/</a>No.545 |
guest
| 2022-12-25 11:29:50
<a href="https://hydroxychloroquinex.com/">chloroquine phosphate tablets</a>No.544 |
guest
| 2022-12-17 07:21:46
<a href="https://www.candipharm.com/# ">www.candipharm.com</a>No.543 |
guest
| 2022-12-13 05:46:50
canadian diet pills http://candipharm.com/No.542 |
guest
| 2022-12-11 21:46:26
<a href="http://www.candipharm.com/# ">http://www.candipharm.com/#</a>No.541 |
guest
| 2021-12-19 17:03:23
Levaquin 500mg Without Dr Approval Over NightNo.496 |
guest
| 2021-11-14 01:58:20
Generic Isotretinoin Internet WebsiteNo.495 |
guest
| 2021-11-12 19:28:07
online cialis prescriptionNo.494 |
guest
| 2021-11-12 16:57:23
Zithromax For AnimalsNo.492 |
guest
| 2021-11-10 10:46:42
Free Trial Viagra In CanadaNo.489 |
guest
| 2021-11-08 07:14:02
Tiger KingNo.486 |
guest
| 2021-11-04 18:46:01
cialis 30 mgNo.484 |
guest
| 2021-11-03 18:55:05
Free Levitra.ComNo.483 |
guest
| 2021-11-03 07:42:27
Cialis Eli LillyNo.472 |
guest
| 2021-10-10 04:58:44
Levitra 10 Mg VenditaNo.471 |
guest
| 2021-10-10 04:32:16
New Healthy Man Viagra ReviewNo.465 |
guest
| 2021-09-26 05:32:55
Cialis Und AntibiotikaNo.463 |
guest
| 2021-09-24 23:52:15
buy accutane in londonNo.462 |
guest
| 2021-09-24 07:28:09
cialis en asturiasNo.459 |
guest
| 2021-09-20 04:43:01
Cheap PriceNo.452 |
guest
| 2021-09-13 13:38:42
Viagra Funciona SiNo.449 |
guest
| 2021-09-10 03:40:23
ConfortidNo.447 |
guest
| 2021-09-07 17:51:07
gay dating younger older gay men social dating sites [url="gaydatinglosangeles.com?"]local gay dating hoboken , n.j.[/url]No.446 |
guest
| 2021-09-06 21:42:57
Buy Propecia Finasteride OnlineNo.444 |
guest
| 2021-09-05 22:37:12
Prix De Vente Du Xenical