SpringCloud里面切换数据源无效的问题

调用链:controller1的接口A->service1的方法A->service2的方法B

方法A开启了事务,且指定了数据库A的数据源

方法B也开启了事务,使用了默认的事务传播机制(PROPAGATION_REQUIRED),即加入到了方法A的事务中,同时又指定了数据库B的数据源

方法A和B里面都有数据库查询操作

在调用接口A时发生了未找到数据库表结构的异常

 

原因分析:

在同一个事务里面切换数据源是不起作用的,因为同一个事务只能作用在单个数据源上,切换数据源需要在不同事务中操作

 

解决方案:

这里需要把方法B的事务传播机制改为PROPAGATION_REQUIRES_NEW,即把方法A上的事务挂起,新建一个事务,这样切换数据源就可以生效了

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppfwx.html