原因
1.使用了事务(@Transactional
),事务的配置比数据源切换的配置优先级更高,那么事务的配置可能会覆盖数据源切换的配置,导致无法切换数据源;
2.调用方法上使用 @Transactional 注解。
如果被调用的方法上有事务配置,它可能会覆盖主要方法上的数据源切换配置。
解决办法
将service层的@DS注解,放置到Mapper层中,并将需要 @Transactional 修饰的部分剥离出原方法,将其设置为被调用方法。在被调用方法上使用 @Transactional 修饰。