「Spring Boot」PointCut式でAOP(アスペクト指向プログラミング)を実装

2021年9月27日

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

Spring Boot

Posted by arkgame