1. 程式人生 > >Spring Boot使用多資料來源配置JdbcTemplate.md

Spring Boot使用多資料來源配置JdbcTemplate.md


  1. 多資料來源配置
    1. 建立一個Spring配置類,定義兩個DataSource用來讀取application.properties中的不同配置。如下例子中,主資料來源配置為spring.datasource.primary開頭的配置,第二資料來源配置為spring.datasource.secondary開頭的配置:
@Configuration
public class DataSourceConfig {

    @Bean(name = "primaryDataSource")
    @Qualifier("primaryDataSource")
    @ConfigurationProperties(prefix="spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "secondaryDataSource")
    @Qualifier("secondaryDataSource")
    @Primary
    @ConfigurationProperties(prefix="spring.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    1. 對應的application.properties配置如下:
spring.datasource.primary.url=jdbc:mysql://localhost:3306/test1
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.secondary.url=jdbc:mysql://localhost:3306/test2
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
  1. JdbcTemplate支援
  • 對JdbcTemplate的支援比較簡單,只需要為其注入對應的datasource即可,如下例子,在建立JdbcTemplate的時候分別注入名為primaryDataSource和secondaryDataSource的資料來源來區分不同的JdbcTemplate:
    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate primaryJdbcTemplate(
            @Qualifier("primaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean(name = "secondaryJdbcTemplate")
    public JdbcTemplate secondaryJdbcTemplate(
            @Qualifier("secondaryDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}