- 在同一个连接点上应用不止一个切面时, 除非明确指定, 否则它们的优先级是不确定的.
- 切面的优先级可以通过实现 Ordered 接口或利用 @Order 注解指定.
- 实现 Ordered 接口, getOrder() 方法的返回值越小, 优先级越高.
- 若使用 @Order 注解, 序号出现在注解中,值越小优先级越高
LoggingAspect 切面的优先级设置为 2
@Order(2)
@Aspect
@Component
public class LoggingAspect {...}
ValidateAspect 切面优先级设置为1
@Order(1)
@Aspect
@Component
public class ValidateAspect {...}
ValidateAspect 优先级高先执行