1. 程式人生 > >jdbc Template多資料來源配置(Spring boot 實現)

jdbc Template多資料來源配置(Spring boot 實現)

由於JdbcTemplate 的bean主要依賴項為一個DataSource 物件, 所以,可以在建立的dataSource 物件時進行自定義,並注入到對應的JdbcTemplate 中 ,實現多資料來源主要在於dataSource 的配置,以及spring bean 自動裝配歧義性的處理 主要使用了 標識首選的bean @Primary 標籤以及 限定自動裝配的bean @Qualifier
下面是配置類的主要程式碼

@Configuration
public class DataSourceConfig {
    @Bean(name = "test")
    @Primary
    public DataSource dataSource(){
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.username("root");
        dataSourceBuilder.driverClassName("com.mysql.jdbc.Driver");
        dataSourceBuilder.password("xxxx");
        dataSourceBuilder.url("jdbc:mysql://localhost:3306/test");
        dataSourceBuilder.type(com.zaxxer.hikari.HikariDataSource.class);
        return dataSourceBuilder.build();
    }
    @Bean(name = "userTemplate")
    @Primary
    public JdbcTemplate jdbcTemplate(@Qualifier("test") DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }


    @Bean(name = "school")
    public DataSource schoolDataSource(){
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.username("root");
        dataSourceBuilder.driverClassName("com.mysql.jdbc.Driver");
        dataSourceBuilder.password("xxxxx");
        dataSourceBuilder.url("jdbc:mysql://localhost:3306/school");
        dataSourceBuilder.type(com.zaxxer.hikari.HikariDataSource.class);
        return dataSourceBuilder.build();
    }
    @Bean(name = "studentTemplate")
    public JdbcTemplate schoolJdbcTemplate(@Qualifier("school") DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }

接下來只需要在使用的地方對需要使用的jdbc template 使用限定符@Qualifier進行引用即可

    @Autowired
    @Qualifier("studentTemplate")
    private JdbcTemplate jdbcTemplate;
    
     @Qualifier("userTemplate")
    private JdbcTemplate jdbcTemplate;