众所周知,Spring 声明式事务是基于 AOP 实现的,那么,如果我们在同一个方法自定义多个 AOP,我们如何指定他们的执行顺序呢?
三种解决方案
1、通过实现 org.springframework.core.Ordered 接口
@Component
@Aspect
@Slf4j
public class MessageQueueAopAspect1 implements Ordered{@Override public int getOrder() { // TODO Auto-generated method stub return 2; }
}
2、通过 @Order 注解(推荐)
- order 越小越先执行
@Component
@Aspect
@Slf4j
@Order(1)
public class MessageQueueAopAspect1{ ...
}
3、通过配置文件配置
<aop:config expose-proxy="true"> <aop:aspect ref="aopBean" order="0"> <aop:pointcut id="testPointcut" expression="@annotation(xxx.xxx.xxx.annotation.xxx)"/> <aop:around pointcut-ref="testPointcut" method="doAround" /> </aop:aspect>
</aop:config>