「Spring Boot」PointCut式でAOP(アスペクト指向プログラミング)を実装
1.依存関係ライブラリの追加
ファイル:pom.xml
下記を追加
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
2.@Aspectアノテーションを使用する
Pointcut:実行対象のJoin Pointを選択する表現(式)のこと。
Join Pointのグループと捉えられる。
書式
@Before(“execution(* *..*Controller.*(..))")
使用例
package com.arkgame.study; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.stereotype.Component; //アノテーション@Aspect @Aspect @Component public class AopTest { //*Controllerというクラス名の任意のメソッドで実行する @Before("execution(* *..*Controller.*(..))") public void getMsg(JoinPoint jpt) { System.out.println("メソッド開始: " + jpt.getSignature()); } }
3.コントローラのクラス
package com.arkgame.study; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; //アノテーションRestController @RestController public class SampleController { //アノテーションGetMapping @GetMapping("/hel") public String getMsg() { return "study skill in arkgame"; } }
4.実行結果
http://127.0.0.1:8788/hel
結果 study skill in arkgame
コンソールに下記を表示
メソッド開始String com.arkgame.study.SampleController.getMsg()