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

1.依存関係ライブラリの追加
ファイル:pom.xml
下記を追加

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

2.@Aspectアノテーションを使用する
After:Join Pointの後で実行されるAdvice。正常終了、例外に関わらず実行される。

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.study;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
//アノテーション@Aspect
@Aspect
@Component
public class AopTest {
//Join Pointの後で実行される
@After("within(com.arkgame.study.SampleController)")
public void getMsg() {
System.out.println("Aspect Oriented Programmingテストサンプル");
}
}
package com.arkgame.study; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; //アノテーション@Aspect @Aspect @Component public class AopTest { //Join Pointの後で実行される @After("within(com.arkgame.study.SampleController)") public void getMsg() { System.out.println("Aspect Oriented Programmingテストサンプル"); } }
package com.arkgame.study;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

//アノテーション@Aspect
@Aspect
@Component
public class AopTest {

      //Join Pointの後で実行される
      @After("within(com.arkgame.study.SampleController)")
      public void getMsg() {
            System.out.println("Aspect Oriented Programmingテストサンプル");

      }

}

3.コントローラのクラス

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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("/hello")
public String getMsg() {
return "study skill";
}
}
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("/hello") public String getMsg() { return "study skill"; } }
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("/hello")
      public String getMsg() {
            return "study skill";
      }

}

4.application.properties

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
server.port =8788
server.port =8788
server.port =8788

5.実行結果
http://127.0.0.1:8788/hello
結果 study skill

コンソールに下記を表示
Aspect Oriented Programmingテストサンプル

Spring Boot

Posted by arkgame