SpringBoot实现【动态数据源配置】这一篇就够了
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.util.Map;
import java.util.HashMap;
import com.zaxxer.hikari.HikariDataSource;
@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class DynamicDataSource {
private Map<String, DataSource> datasource = new HashMap<>();
public DataSource getDataSource(String dataSourceName) {
return datasource.get(dataSourceName);
}
public void setDataSource(String dataSourceName, DataSource dataSource) {
datasource.put(dataSourceName, dataSource);
}
public Map<String, DataSource> getDatasources() {
return datasource;
}
public void setDatasource(Map<String, DataSource> datasource) {
this.datasource = datasource;
}
public DataSource createDataSource(DataSourceProperties dataSourceProperties) {
HikariDataSource dataSource = new HikariDataSource();
dataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
dataSource.setJdbcUrl(dataSourceProperties.getUrl());
dataSource.setUsername(dataSourceProperties.getUsername());
dataSource.setPassword(dataSourceProperties.getPassword());
// 其他HikariDataSource的配置...
return dataSource;
}
}
// 使用示例
// DynamicDataSource dynamicDataSource = new DynamicDataSource();
// DataSource dataSource = dynamicDataSource.createDataSource(dataSourceProperties);
// dynamicDataSource.setDataSource("myDataSource", dataSource);
这个示例代码展示了如何在SpringBoot应用中创建一个动态数据源,并且如何使用HikariCP作为数据库连接池。这个类可以用来在运行时根据不同的数据源配置创建并注册数据源。在实际使用时,你需要根据你的配置来调整DataSourceProperties
的获取方式。
评论已关闭