Spring Boot Aop 执行顺序
1. 概述
在 spring boot 项目中,使用 aop 增强,不仅可以很优雅地扩展功能,还可以让一写多用,避免写重复代码,例如:记录接口耗时,记录接口日志,接口权限,等等。所以,在项目中学习并使用 aop ,是十分必要的。然而,当我们在一个接口中使用多个 aop,时,就需要注意他们的执行顺序了。那么,它们的执行顺序是怎样的呢?如果不把这个问题搞明白,那我们的程序就不可控,这是不允许的,这就是我们今天要讨论的问题。
2. 实现 AOP
2.1 通过注解实现 AOP
MyAop:
@Target({
ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAop {
}
MyAspect:
@Aspect
@Component
public class MyAspect {
@Around("@annotation(aop)")
public Object around(ProceedingJoinPoint joinPoint,
MyAop aop) throws Throwable {
return joinPoint.proceed();
}
}
SampleController#myApi:
@RestController
@RequestMapping("/sample")
public