Spring - 如何控制多个 AOP 切面执行顺序?

发布时间:2024年01月15日

众所周知,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> 
文章来源:https://blog.csdn.net/Dream_Weave/article/details/135595424
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。