Spring5.2.6でAOP(Aspect Oriented Programming)の使い方(pom設定、アノテーションの書き方など)

pom.xmlにライブライを追加する

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>5.2.6.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>5.2.6.RELEASE</version>
		</dependency>

アノテーションの使い方
1.@Before
メソッド実行前に実行される。

@Before("execution(* com.arkgame.study..*(..))")
public void before(JointPoint jpt){
   //some code
}

2.@After
メソッド実行後に実行される。

@After("execution(* com.arkgame.study..*(..))")
public void after(JointPoint jpt){
    //some code
}

3.@AfterReturning
メソッドの処理が正しく終了した場合に実行される。

@AfterReturning(value = "execution(* com.arkgame.study..*(..))", returning = "cft")
public void afterReturning(Object cft){
  System.out.println(cft);
}

4.@AfterThrowing
メソッドの処理中に例外が発生した場合に実行される。

@AfterThrowing(value ="execution(* com.arkgame.study..*(..))",throwing="e")
public void afterThrowing(Exception e){
  System.out.println("exception message:"+e.toString());
}

5.@Around
メソッド実行前に呼ばれ、この中でメソッドを実行する。

@Arround("execution(* com.arkgame.study..*(..))")
public void around(ProceedingJoinPoint pjp) thrwos Throwable{
    String result=(String)pjp.proceed();
	System.out.println(result);
}

 

SpringMVC

Posted by arkgame