起因:
配置一个数据源我们知道可以在yml文件或者properties中编写配置,利用SpringBoot自动配置的特性完成绑定,但如果我们需要依赖一个以上的多个数据源这该怎么办呢?
解决方案:
不同的数据源配置要分开,避免混在一起,一定要注意正在操作的数据源是哪个。
首先我们需要排除SpringBoot对数据源的自动配置,利用exclude属性将DataSourceAutoConfiguration,DataSourceTransactionManagerAutoConfiguration,JdbcTemplateAutoConfiguration排除。
如下图:
这样做消除了框架对数据源一系列的自动配置,我们可以手动去控制它们。先来看下properties配置文件,声明两种数据源url分别是default和text。
然后我们手动配置一个数据源
创建一个配置类DataSourceProperties绑定Properties配置文件,数据源我们采用配置文件中声明的default url。
接着创建DataSource的bean并且输出log日志查看数据源url。
然后为上述创建的DataSource的Bean创建对应的事务管理器
这个时候我们就配置好一个数据源了,可以运行输出下没什么问题。
用同样的方法我们配置第二个数据源text
最终的代码如下:
运行并输出日志正常运行,并没有什么问题。
查看actuator中beans发现却在其中