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/)