事务Transactional不回滚问题

1、当项目中@Transactional注解导入的包为javax.transaction.Transactional时,发现事务并不会回滚,猜想是项目使用的是springcloud,可能没管理这个包下的。

2、修改@Transactional注解的包为org.springframework.transaction.annotation.Transactional ,事务可以回滚,此时说明注解对应的方法加入了管理。

3、网上一个说法是,Spring之所以可以对开启@Transactional的方法进行事务管理,是因为Spring为当前类生成了一个代理类,然后在执行相关方法时,会判断这个方法有没有@Transactional注解,如果有的话,则会开启一个事务。

根据此说法,个人想法是,在Interface加了注解,注入的时候使用的是Interface,所以是生成了一个代理类的,则调用时,spring是通过代理类去调用,所以是开启了事务的。

总结:1、导包注意导入spring的包。

           2、transactional,之所以加在接口,那是因为通过自动注入时,spring创建代理类,以开启事务。

           3、实际执行的便是接口的实现类,即对应的service的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值