引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
定义切面
@Aspect
@Component
public class TestAop {
@Before("point()")
public void test(){
System.out.println(12);
}
@Pointcut("@annotation(com.demo.springboot.annotation.TestAnnotation)")
public void point(){
}
}
切点表达式
1、execution(public * *(..)) 任意的公共方法
2、execution(* set*(..)) 以set开头的所有的方法
3、execution(* com.lingyejun.annotation.LoggerApply.*(..))com.lingyejun.annotation.LoggerApply这个类里的所有的方法
4、execution(* com.lingyejun.annotation.*.*(..))com.lingyejun.annotation包下的所有的类的所有的方法
5、execution(* com.lingyejun.annotation..*.*(..))com.lingyejun.annotation包及子包下所有的类的所有的方法
6、execution(* com.lingyejun.annotation..*.*(String,?,Long)) com.lingyejun.annotation包及子包下所有的类的有三个参数,第一个参数为String类型,第二个参数为任意类型,第三个参数为Long类型的方法
7、execution(@annotation(com.lingyejun.annotation.Lingyejun))
通知类型
@Before 方法执行前
@AfterReturning 方法返回值前
@After 方法执行后
@AfterThrowing 方法抛出异常后
@Around 方法执行前后