Spring 自定义AOP与声明式事务执行顺序问题

文章详细介绍了如何通过调整AOP执行顺序解决服务内部异常时,自定义日志记录操作被事务回滚的问题。通过设置自定义AOP的优先级为最低,确保其在事务之前执行,从而避免了回滚现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近发现一个小问题,在自己的service中使用了声明式事务,并且在service前后使用了自定义AOP来记录日志,发现在service中发生异常时,连带自定义AOP中的记录log操作也会回滚,尝试在自定义AOP的方法中添加声明式事务来设置传播性(改成不启用事务以及启用新事务),然而均不起作用。后来想想两个都是用AOP来实现,执行起来的顺序估计有问题。

      查找资料发现可以对多个AOP设置执行顺序,这种情况只要让自定义AOP在前,不包含在事务中,应该就能解决。

      可以设置order参数,值越小,优先级越高,如果不设置,就是优先级最小。

      

比如:


设置事务的优先级 设置成2

            <!-- 采用@Transactional注解方式使用事务 -->
	    <tx:annotation-driven transaction-manager="txManager" order="2"/>


设置自定义AOP的优先级 设置成1

@Service
@Aspect
@Order(1)
public class LogAspect {
。。。
}



经测试解决问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值