SpringBoot多数据源事务管理机制

写到多数据源事务来了就必定写成功了多数据源项目,可以参考我上一篇博客:SpringBoot根据包名进行区分使用多数据源

 

1、文章中的第七步其实就已经配置好了事务管理器到Spring容器了

按照套路来第二个数据源的事务管理Bean名字大家应该想到了那就是“test2TransactionManager”

 

2、是时候改装Service层加上事务注解了---->记着这里是个坑

3、测试------------>报错

很显然,有多个事务,容器不知道我们要的是哪个事务,所以第二步的那个坑现在来填

4、填坑

5、问题-------->当Controller层带着第二个参数age=0到这个Service方法来,运行后的结果对两个数据到数据库的结果是怎样的?

                                                           不要偷看答案

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

|

答案:

           第一个成功插入数据库,第二个失败进行回滚

解答:

           此Service方法上面加上的注解事务为第二个数据源,所以,第一个数据源它可管不着,第一个执行掉第一行语句就已经插入到数据库了,第二个由于事务管着了,所以需要等到方法完全执行完毕才能够插入到数据库,这个时候发现此方法异常了,于是进行了数据回滚操作。

 

那么问题来了,如果是在分布式项目环境下,又该如何处理SpringBoot的事务问题呢?

 

我的下一篇博客:SpringBoot使用jta+atomikos解决分布式事务

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值