SpringBoot 2.x 多数据源动态数据源,升级优化实现

背景:
1、四年多之前我写过一块多数据源的,随着框架的升级,技术的进步,已经不能很好的满足需求
2、现在自身对这块又重新进行了回忆,发现很多内容可以优化改造
3、公司项目中现在又有此需求,所以参考了一些资料结合之前的代码对此进行了重要代码的优化改造

结果:
就优化结果来看,个人觉得几乎已经接近完美,优化升级事项说明
1、完善连接池参数实现,调整了参数配置文件的配置,采用数组方式兼容yml文件
2、支持为每个数据源分别配置连接池参数
3、注解 @TargetDataSource 更名为 @DataSource
4、支持类级别、方法级别、参数级别的动态数据源
5、将注解使用范围下沉到更接近SQL的 Mapper 层,可以完全避免在Service层因为嵌套调用使用不当导致的数据源冲突或不生效问题
6、支持自定义SQL的数据源切换,兼容通用Mapper内置各种的方法的数据源切换
7、对PageHeader分页使用无影响
8、支持数据源属性继承(比如所有数据库的账号密码都一样,或者连接池配置都一样,那么子数据源就可以不配置这些熟悉)

如上内容,看过老的那篇数据源内容的能有个对比,直接看本文的,就直接往下看代码吧,下面的代码是所有代码,一点不缺,拷贝进项目即可使用(理论上零修改),简单粗暴:

文件清单:

DataSource.java
MultiDataSource.java
MultiDataSourceAspect.java
MultiDataSourceContextHolder.java
MultiDataSourceRegister.java
MultiDataSourceConfigurer.java

/**
 * 在方法上/参数上使用,用于指定使用哪个数据源(仅限使用于继承 tk.mybatis.mapper.common.Mapper 的接口中,限定了Service等其他类中使用无效,

你可能感兴趣的:(Spring,Boot)