springboot3配置多数据源
时间: 2024-12-26 15:11:17 浏览: 0
Spring Boot 3配置多数据源通常涉及到`spring-boot-starter-data-jpa`和`spring-cloud-context`等依赖,以及`@ConfigurationProperties`注解的使用。以下是基本步骤:
1. 添加依赖:在`pom.xml`文件中添加对`spring-boot-starter-data-jpa`和`spring-cloud-context`的支持,如果需要动态切换数据源,可能还需要`spring-cloud-netflix-eureka-client`。
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
```
2. 配置数据源:创建多个`DataSource` bean,并通过环境变量如`spring.datasource.name`区分它们。可以使用`@Profile`注解标记每个数据源对应的配置。
```java
@Configuration
public class DataSourceConfig {
@Bean
@Profile("dev")
public DataSource devDataSource() {
// 实现 dev 数据源配置
}
@Bean
@Profile("prod")
public DataSource prodDataSource() {
// 实现 prod 数据源配置
}
}
```
3. 使用`@ConfigurationProperties`获取数据库连接信息:定义一个配置类,该类将从环境变量自动装配。
```java
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties {
private String url;
private String username;
private String password;
// getters and setters
}
```
4. 定义JPA仓库,注入对应的数据源。
```java
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// ...
}
```
5. 在应用启动时,可以根据配置动态选择数据源:使用`Environment`对象来获取当前运行模式并切换数据源。
```java
@Autowired
private Environment env;
@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
if (env.getActiveProfiles().contains("dev")) {
return new DataSourceTransactionManager(devDataSource());
} else {
return new DataSourceTransactionManager(prodDataSource());
}
}
```
阅读全文