Springboot配置多数据源, 并指定操作的数据源
时间: 2024-10-17 08:11:21 浏览: 44
在Spring Boot中配置多数据源通常是为了支持应用程序需要连接多个数据库,例如生产环境和测试环境的分离,或者业务模块间的隔离等场景。以下是基本步骤:
1. 首先,在`application.properties`或`application.yml`文件中,为每个数据源设置独立的属性,例如:
```properties
spring.datasource.master.url=jdbc:mysql://localhost/master_db
spring.datasource.master.username=root
spring.datasource.master.password=password
spring.datasource.slave.url=jdbc:mysql://localhost/slave_db
spring.datasource.slave.username=slave_user
spring.datasource.slave.password=slave_password
```
2. 使用Spring Cloud Config Server来管理不同环境的配置,如果项目规模较大。
3. 创建数据源bean,可以使用`@ConfigurationProperties`注解自动生成,例如:
```java
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceConfig {
private String masterUrl;
private String slaveUrl;
// getters and setters
}
```
4. 创建一个`DataSourceAware`接口或者`AbstractRoutingDataSource`的子类,用于动态选择数据源:
```java
@Configuration
public class MultiDataSourceConfig {
@Autowired
private DataSourceConfig dataSourceConfig;
@Bean(name = "masterDataSource")
public DataSource masterDataSource() {
return new DriverManagerDataSource(dataSourceConfig.getMasterUrl(), dataSourceConfig.getMasterUsername(), dataSourceConfig.getMasterPassword());
}
@Bean(name = "slaveDataSource")
public DataSource slaveDataSource() {
return new DriverManagerDataSource(dataSourceConfig.getSlaveUrl(), dataSourceConfig.getSlaveUsername(), dataSourceConfig.getSlavePassword());
}
@Profile("production") // 这里可以根据不同环境选择启用的数据源
@Bean(destroyMethod = "close")
public DataSource dataSource() {
return masterDataSource();
}
@Profile({"test", "dev"})
@Bean(destroyMethod = "close")
public DataSource dataSource() {
return slaveDataSource();
}
}
```
5. 在需要使用数据源的地方,通过`@Qualifier`注解指定使用哪个数据源,比如:
```java
@Service
public class ServiceImpl {
@Autowired
@Qualifier("masterDataSource")
private DataSource masterDs;
public void operationOnMaster() {
// 使用masterDataSource
}
@Autowired
@Qualifier("slaveDataSource")
private DataSource slaveDs;
public void operationOnSlave() {
// 使用slaveDataSource
}
}
```
阅读全文