springboot-druid-mybatis多数据源使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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, 对事务已然无效。
源码

猜你喜欢

转载自blog.csdn.net/itsoftchenfei/article/details/77994827