版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/itsoftchenfei/article/details/77994827
spring-boot上使用多数据源真的很麻烦,很多都不推荐这样去使用。但某些特殊的场景确实需求,它涉及到非查询操作(需事务接入),没有分布式事务真的解决不了。
入坑记
- 1.mybatis-spring-boot-starter上折腾了2天,多数据源上没有想象中的好用
- 2.@bean重名加载问题:不会再加载(方法student2不会被执行)说明顺序很重要
@Bean("student")
public Student student() {
return new Student();
}
@Bean("student")
public Student student2() {
return new Student();
}
- 3.@Bean修饰的方法有时会拿不到所属类@Autowired修饰的成员变量:建议只访问是常量
- 4.@EnableConfigurationProperties({MybatisProperties.class})值一直为空的问题,未定位
- 5.使用@Transactional时无法定位执行AOP指定的数据源,问题定位:DataSourceTransactionManager.doBegin处。原来在开启事务的时候,Spring会默认马上去取得数据源,并且把它缓存到DataSourceTransactionObject对象中,用于后续的commit, rollback等事务操作,所以我们后续尽管切换AbstractRoutingDataSource, 对事务已然无效。