「Spring Boot」AOP(アスペクト指向プログラミング)にメソッド名で対象のJoin Pointを選択

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.create*(..))")
使用例

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というクラスのcreate*メソッドで実行
      @Before("execution(* *..*Controller.create*(..))")
      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("/cftA")
      public String createUser() {
            return "create user sample";
      }
      
      //アノテーションGetMapping
      @GetMapping("/cftB")
      public String createEmp() {
            return "create employee sample";
      }


}

4.実行結果
http://127.0.0.1:8788/cftA
結果 create user sample

http://127.0.0.1:8788/cftB
結果 create employee sample

コンソールに下記を表示
メソッド開始: String com.arkgame.study.SampleController.createUser()
メソッド開始: String com.arkgame.study.SampleController.createEmp()

 

Spring AOP

Posted by arkgame