spring的坑--@Transcation 和 @Async 失效

本文深入探讨了Spring框架中@Transaction和@Async注解的原理,分析了同一类内方法调用导致注解失效的问题,并提供了两种解决方案:一是将方法移至另一类;二是通过修改Spring配置文件启用代理,使用AopContext.currentProxy()调用目标方法。

原理

@Transcation和@Async注解都是基于aop动态代理实现的.

错误原因

当本类a方法调用b方法时,b方法上的注解就会失效,只有调用代理类才可以使注解生效

解决方法

方法1.将需要调用的方法编写到另一个类
方法2.在spring配置文件加入 <aop:aspectj-autoproxy expose-proxy="true"/>
	使用 ((***Service)AopContext.currentProxy()).b();	来调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值