1.先排除掉springboot的數據源自動配置項
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class})
2.application.properties添加數據庫配置
#main datasource config
main.datasource.url=jdbc:mysql://localhost:3306/tysql?serverTimezone=UTC
main.datasource.username=root
main.datasource.password=
main.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#sub datasource config
sub.datasource.url=jdbc:mysql://localhost:3306/testsql?serverTimezone=UTC
sub.datasource.username=root
sub.datasource.password=
sub.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
3.新增多數據源配置
@Configuration
public class MyDatasource {
@Bean
@ConfigurationProperties("main.datasource")
public DataSourceProperties mainDataSourceProperties(){
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("sub.datasource")
public DataSourceProperties subDataSourceProperties(){
return new DataSourceProperties();
}
@Bean
public DataSource mainDataSource() {
DataSourceProperties dataSourceProperties = mainDataSourceProperties();
System.out.println("main datasource url: "+dataSourceProperties.getUrl());
return dataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean
public DataSource subDataSource() {
DataSourceProperties dataSourceProperties = subDataSourceProperties();
System.out.println("sun datasource url: "+dataSourceProperties.getUrl());
return dataSourceProperties.initializeDataSourceBuilder().build();
}
}
4.單元測試看一下配置是否成功
@RunWith(SpringRunner.class)
@SpringBootTest
class HelloSpringApplicationTests {
@Autowired
@Qualifier("mainDataSource")
private DataSource mainDataSource;
@Autowired
@Qualifier("subDataSource")
private DataSource subDataSource;
@Test
void dataSourceTest() throws Exception {
JdbcTemplate mainJdbcTemplate = new JdbcTemplate(mainDataSource);
List<?> mainList = mainJdbcTemplate.queryForList("select * from student");
System.out.println(mainList);
JdbcTemplate subJdbcTtemplate = new JdbcTemplate(subDataSource);
List<?> subList = subJdbcTtemplate.queryForList("select * from tbl_user");
System.out.println(subList);
}
}
分別測試讀取main和sub兩個數據庫的表數據,讀取成功。
整個多數據源的配置就此結束!