Spring Boot多数据源配置与使用

之前在介绍使用JdbcTemplate和Spring-data-jpa时,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于之前的JdbcTemplate和Spring-data-jpa例子分别介绍两种多数据源的配置方式。

多数据源配置

创建一个Spring配置类,定义两个DataSource用来读取application.properties中的不同配置。如下例子中,主数据源配置为spring.datasource.primary开头的配置,第二数据源配置为spring.datasource.secondary开头的配置。

Spring Boot多数据源配置与使用

对应的application.properties配置如下:

Spring Boot多数据源配置与使用

JdbcTemplate支持

对JdbcTemplate的支持比较简单,只需要为其注入对应的datasource即可,如下例子,在创建JdbcTemplate的时候分别注入名为primaryDataSource和secondaryDataSource的数据源来区分不同的JdbcTemplate。

Spring Boot多数据源配置与使用

接下来通过测试用例来演示如何使用这两个针对不同数据源的JdbcTemplate。

Spring Boot多数据源配置与使用

Spring-data-jpa支持

对于数据源的配置可以沿用上例中DataSourceConfig的实现。

新增对第一数据源的JPA配置,注意两处注释的地方,用于指定数据源对应的Entity实体和Repository定义位置,用@Primary区分主数据源。

Spring Boot多数据源配置与使用

新增对第二数据源的JPA配置,内容与第一数据源类似,具体如下:

Spring Boot多数据源配置与使用

完成了以上配置之后,主数据源的实体和数据访问对象位于:com.didispace.domain.p,次数据源的实体和数据访问接口位于:com.didispace.domain.s。

分别在这两个package下创建各自的实体和数据访问接口

  • 主数据源下,创建User实体和对应的Repository接口

Spring Boot多数据源配置与使用

Spring Boot多数据源配置与使用

  • 从数据源下,创建Message实体和对应的Repository接口

Spring Boot多数据源配置与使用

Spring Boot多数据源配置与使用

接下来通过测试用例来验证使用这两个针对不同数据源的配置进行数据操作。

Spring Boot多数据源配置与使用

Spring Boot多数据源配置与使用

相关推荐