现在springboot项目使用继承AbstractRoutingDataSource的方法
动态切换数据源,ORM使用mybatis
尝试使用事务注解会造成切数据库失败的情况,
请问这个时候如何使用事务处理,还有springboot能否直接使用
txmanager管理所有的service层
现在springboot项目使用继承AbstractRoutingDataSource的方法
动态切换数据源,ORM使用mybatis
尝试使用事务注解会造成切数据库失败的情况,
请问这个时候如何使用事务处理,还有springboot能否直接使用
txmanager管理所有的service层
springboot使用多数据源,如果在事务中切换数据源是会有问题的,是由于springboot的事务同步机制造成的,在开启了事务后,springboot会在当前线程记录下sessionfactory对应的session,然后,由于你用的是AbstractRoutingDataSource,切换数据源时需要重新Open一个session的,而springboot在open一个session,会先判断是是否开启了事务,如果是,则在缓存里面,通过sessionfactory获取session,然后嘛,你只有一个sessionfactory,且你开启了事务,so,嵌套的service会使用相同的session,所以,切换数据库无效,若需要在事务中切换其它数据源,需要手动opensession