当前使用版本(必填,否则不予处理)
dynamic-datasource-spring-boot-starter 3.5.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
1 事情是这样的: serviceA调用serviceB,serviceA开启了事务,serviceB加了@DS注解,发现serviceB数据源切换失败,于是在serviceB上加了@Transactional(propagation = Propagation.REQUIRES_NEW),数据源切换成功,但是发现事情没这么简单。
2 引发的思考: 伪代码: @Transactional serviceA{
@DS("sla1") @Transactional(propagation = Propagation.REQUIRES_NEW) serviceB.xx();
@Transactional serviceC.xx(); } 这种场景下,serviceC的调用是与最外层serviceA同一个事务的,那么如果serviceC一场了,serviceB是不会回滚的,但是我们是希望serviceB可以回滚的,但是查了很多资料,serviceB必须得重新声明事务才能让@DS生效。
请问,有什么好的解决办法吗?