spring boot 多数据源
时间: 2023-07-26 11:04:00 浏览: 113
Spring Boot 支持多数据源配置,可以通过配置多个数据源来实现多数据源访问。下面是一个简单的示例,演示如何在 Spring Boot 应用程序中配置多个数据源。
首先,在 application.properties 文件中配置两个数据源:
```
# 配置数据源A
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=user1
spring.datasource.password=pass1
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 配置数据源B
datasource.db2.url=jdbc:mysql://localhost:3306/db2
datasource.db2.username=user2
datasource.db2.password=pass2
datasource.db2.driver-class-name=com.mysql.jdbc.Driver
```
然后,在应用程序中定义两个数据源的 bean:
```
@Configuration
public class DataSourceConfig {
@Bean(name = "dataSourceA")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSourceA() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dataSourceB")
@ConfigurationProperties(prefix = "datasource.db2")
public DataSource dataSourceB() {
return DataSourceBuilder.create().build();
}
}
```
在上面的配置中,我们定义了两个数据源,一个是 `dataSourceA`,另一个是 `dataSourceB`。其中,`dataSourceA` 使用了 `@Primary` 注解,表示它是默认数据源。`dataSourceB` 没有使用 `@Primary` 注解,因此需要在使用时指定。
最后,在需要使用数据源的地方,通过 `@Qualifier` 注解指定要使用的数据源:
```
@Service
public class MyService {
@Autowired
@Qualifier("dataSourceA")
private DataSource dataSourceA;
@Autowired
@Qualifier("dataSourceB")
private DataSource dataSourceB;
// 使用 dataSourceA 进行数据操作
public void doSomethingWithDataSourceA() {
// ...
}
// 使用 dataSourceB 进行数据操作
public void doSomethingWithDataSourceB() {
// ...
}
}
```
在上面的代码中,我们通过 `@Qualifier` 注解指定了要使用的数据源。这样,在调用 `doSomethingWithDataSourceA` 方法时,使用的就是 `dataSourceA` 数据源;在调用 `doSomethingWithDataSourceB` 方法时,使用的就是 `dataSourceB` 数据源。
阅读全文