注意:jar包版本必须和jdk版本一致,否则会出现错误 jdk1.8==>1.8
<dependency>
<groupId>aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.7</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.7</version>
</dependency>
定义切面
package com.tansen.springboot.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class AspectTest {
@Pointcut("execution(* com.tansen.springboot.controller.*.testAspect(..))")
private void testAspect(){
}
@Before("testAspect()")
public void before(){
this.log("before()在方法执行之前调用");
}
@After("testAspect()")
public void after(){
this.log("after()在方法执行之后调用");
}
@Around("testAspect()")
public void around(ProceedingJoinPoint pjp) throws Throwable{
this.log("around()在方法执行之前调用");
pjp.proceed();
this.log("around()在方法执行之后调用");
}
private void log(String str){
System.out.println(str);
}
}
通知顺序
around()在方法执行之前调用
before()在方法执行之前调用
around()在方法执行之后调用
after()在方法执行之后调用