jdbc Template多資料來源配置(Spring boot 實現)
阿新 • • 發佈:2018-12-22
由於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;