众所周知,spring声明式事务是基于AOP实现的,那么,如果我们在同一个方法自定义多个AOP,我们如何指定他们的执行顺序呢?网上很多答案都是指定order,order越小越是最先执行,这种也不能算是错,但有些片面。
配置AOP执行顺序的三种方式
通过实现org.springframework.core.Ordered接口
@Component
@Aspect
@Slf4jpublic class MessageQueueAopAspect1 implementsOrdered{@Overridepublic intgetOrder() {//TODO Auto-generated method stub
return 2;
}
}
通过注解
@Component
@Aspect
@Slf4j
@Order(1)public classMessageQueueAopAspect1{
...
}
通过配置文件配置
同一个方法上加以下两个AOP
测试代码
@Component
@Aspect
@Slf4jpublic class MessageQueueAopAspect1 implementsOrdered{
@Resource(name="actionMessageProducer")private IProduceractionProducer;
@Pointcut("@annotation(com.xxx