- 2021-07-17 12:22:21
- 7900 热度
- 0 评论
在本系列之前的教程中,我们已经介绍了如何使用目前最常用的三种数据访问方式:
下面我们将分三篇来介绍在这三种数据访问方式之下,当我们需要多个数据源的时候,该如何使用的配置说明。
添加多数据源的配置
先在Spring Boot的配置文件application.properties
中设置两个你要链接的数据库配置,比如这样:
spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/test1 |
说明与注意:
- 多数据源配置的时候,与单数据源不同点在于
spring.datasource
之后多设置一个数据源名称primary
和secondary
来区分不同的数据源配置,这个前缀将在后续初始化数据源的时候用到。 - 数据源连接配置2.x和1.x的配置项是有区别的:2.x使用
spring.datasource.secondary.jdbc-url
,而1.x版本使用spring.datasource.secondary.url
。如果你在配置的时候发生了这个报错java.lang.IllegalArgumentException: jdbcUrl is required with driverClassName.
,那么就是这个配置项的问题。
初始化数据源与JdbcTemplate
完成多数据源的配置信息之后,就来创建个配置类来加载这些配置信息,初始化数据源,以及初始化每个数据源要用的JdbcTemplate。你只需要在你的Spring Boot应用下添加下面的这个配置类即可完成!
|
说明与注意:
- 前两个Bean是数据源的创建,通过
@ConfigurationProperties
可以知道这两个数据源分别加载了spring.datasource.primary.*
和spring.datasource.secondary.*
的配置。 @Primary
注解指定了主数据源,就是当我们不特别指定哪个数据源的时候,就会使用这个Bean- 后两个Bean是每个数据源对应的
JdbcTemplate
。可以看到这两个JdbcTemplate
创建的时候,分别注入了primaryDataSource
数据源和secondaryDataSource
数据源
测试一下
完成了上面之后,我们就可以写个测试类来尝试一下上面的多数据源配置是否正确了,比如下面这样:
.class) (SpringRunner |
说明与注意:
- 可能这里你会问,有两个JdbcTemplate,为什么不用
@Qualifier
指定?这里顺带说个小知识点,当我们不指定的时候,会采用参数的名字来查找Bean,存在的话就注入。 - 这两个JdbcTemplate创建的时候,我们也没指定名字,它们是如何匹配上的?这里也是一个小知识点,当我们创建Bean的时候,默认会使用方法名称来作为Bean的名称,所以这里就对应上了。读者不妨回头看看两个名称是不是一致的?
代码示例
本文的相关例子可以查看下面仓库中的chapter3-7
目录:
- Github:https://github.com/dyc87112/SpringBoot-Learning/
- Gitee:https://gitee.com/didispace/SpringBoot-Learning/
如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!
相关阅读
0 评论
留下评论