最近有个需求需要操作后多个库进行同步数据等处理,若依自带可配置多数据源,但是需要做很多固定配置,也不能满足动态配置
1、添加多数据源
@Bean(name = "dynamicDataSource")
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource) {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
for (String item : dataList) {
setDataSourceSync(targetDataSources, item);
}
return new DynamicDataSource(masterDataSource, targetDataSources);
}
2、多数据源配置
public void setDataSourceSync(Map<Object, Object> targetDataSources, String sourceName) {
Properties properties = new Properties();
properties.put("url", "jdbc:sqlserver://192.168.3.13:1433;SelectMethod=Cursor;DatabaseName=" + sourceName);
properties.put("username", "sa");
properties.put("driverClassName", "com.microsoft.sqlserver.jdbc.SQLServerDriver");
properties.put("password", "pp");
DataSource dataSource = null;
try {
dataSource = DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
// JdbcTemplate template = new JdbcTemplate(dataSource);
targetDataSources.put(sourceName, dataSource);
}