Springframework 学習その3 AOPのPointcutについてです。
Pointcutについて
Pointcutとは
前回のまとめで記載しましたが、Pointcutについて今一度まとめてみます。
Pointcutとは、Join Pointのグループを示します。
例えば、以下のようなexecutionも、Join PointのPointcutとなります。
execution(* com.nanafushi.sample.*Controller.*(..))
Pointcutはパターンを指定してマッチングをすることができます。
Pointcutの構成
execution(* com.nanafushi.sample.*Controller.*(..))
上記を例として、左から順番に抽出して説明すると、
| パーツ | 役割 |
|---|---|
| execution | 指示子。メソッドの実行をトリガにする |
| * | 戻り値。voidのものだけ とか |
| com.nanafushi.sample | パッケージ |
| *Controller | クラス名。末尾がControllerのクラス |
| * | メソッド名 |
| (..) | メソッドの引数。この場合は任意の引数 |
ワイルドカード
Pointcutで利用できるワイルドカードは以下の通りです。
| ワイルドカード | 役割 |
|---|---|
| * | 原則は任意の文字列 パッケージの場合は任意の1階層 メソッドの場合は任意の1つの引数 |
| .. | パッケージの場合は、任意の0以上のパッケージ メソッドの引数の場合は、任意の0以上の引数 |
| + | クラス名の後に指定することで、そのクラスを含むサブクラス、実装クラス全てを含める |
指示子の種類
Pointcutには色々種類があります。
よく使いそうなものを列挙してみます。
| Pointcut | トリガ |
|---|---|
| execution | パターンにマッチするメソッドが対象 |
| within | パターンにマッチするクラスのメソッドが対象 |
| bean | パターンにマッチするBeanのメソッドが対象 |
以上です。お疲れ様でしたー。
参考書籍
[Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発] (https://www.amazon.co.jp/Spring%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-Spring-Framework%E3%81%AB%E3%82%88%E3%82%8BJava%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BENTT%E3%83%87%E3%83%BC%E3%82%BF/dp/4798142476/)