如何在springboot项目中通过application.yml配置文件切换微服务所使用的数据源(达梦、mysql)
时间: 2024-11-29 21:17:05 浏览: 27
在Spring Boot项目中,你可以通过`application.yml`配置文件来管理多个数据源,并通过环境变量或Profiles(配置标签)来动态切换使用的数据源。以下是步骤:
1. **创建数据源配置**:
- 在`application.yml`或`application-dev.yml`等不同的配置文件中,为每种数据源(如达梦和MySQL)分别创建独立的数据源配置。例如:
```yaml
# application.yml 或 application-dm.yml
data-source-dm:
driverClassName: com.daming.jdbc.Driver
url: jdbc:dmdatabase://localhost:9084/mydb
username: user1
password: pass1
# application.yml 或 application-mysql.yml
data-source-mysql:
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mydb
username: user2
password: pass2
```
2. **环境变量或Profiles选择**:
- 使用`spring.profiles.active`属性来设置当前生效的数据源。比如在命令行运行应用时可以指定 `-Dspring.profiles.active=dm` 或 `mysql`。
- 或者,在启动类上添加`@Profile("dm")`或`@Profile("mysql")`注解,这样只有激活对应Profile的应用才会加载该数据源的配置。
```java
@SpringBootApplication
@EnableConfigurationProperties(MyDataSourceProperties.class) // 自定义配置类,用于读取YAML配置
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
3. **配置自动配置类**:
- 创建一个自定义的配置类,比如`MyDataSourceProperties`,使用`@ConfigurationProperties(prefix = "data-source")`来扫描和解析YAML中的数据源配置。
```java
@ConfigurationProperties(prefix = "data-source")
public class MyDataSourceProperties {
private String type; // dm 或 mysql
@Value("${spring.profiles.active}")
private String activeProfile;
// getters and setters...
}
@Autowired
private MyDataSourceProperties dataSourceProperties;
@Autowired
private DataSource dataSource;
@Bean
@ConfigurationProfile({ "dm", "mysql" }) // 根据activeProfile选择数据源
public DataSource myDataSource() {
switch (dataSourceProperties.getType()) {
case "dm":
return new DriverManagerDataSource(dataSourceProperties.getDmDataSource());
case "mysql":
return new DriverManagerDataSource(dataSourceProperties.getMysqlDataSource());
default:
throw new IllegalArgumentException("Invalid data source type");
}
}
```
当你需要切换数据源时,只需修改环境变量或启动应用时指定的配置标签即可。
阅读全文