springboot 怎么链接多个数据库,使用yml
时间: 2024-04-20 14:03:48 浏览: 87
springboot项目连接多个数据库
文件配置
可以通过在 `application.yml` 文件中配置多个数据源来链接多个数据库,例如:
```
spring:
datasource:
primary:
url: jdbc:mysql://localhost:3306/primary_db
username: root
password: root
secondary:
url: jdbc:mysql://localhost:3306/secondary_db
username: root
password: root
```
上面的例子中,我们配置了两个数据源,一个是 `primary`,另一个是 `secondary`,并分别指定了它们的 JDBC URL、用户名和密码。
在代码中使用多个数据源
Spring Boot 自动为我们创建了一个默认数据源,如果我们需要使用其他数据源,可以通过在代码中配置多个数据源来实现。
首先,在我们的代码中,我们需要使用 `@Configuration` 注解声明一个配置类,然后在这个类中创建多个数据源。例如:
```
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
```
上面的代码中,我们声明了一个 `DataSourceConfig` 配置类,并在其中创建了两个数据源,一个是 `primaryDataSource`,另一个是 `secondaryDataSource`。
其中,`@Primary` 注解表示默认使用的数据源,如果没有指定数据源的名称,则将使用这个数据源。
接着,在我们的代码中,我们可以使用 `@Qualifier` 注解来指定要使用的数据源。例如:
```
@Service
public class UserService {
private final JdbcTemplate jdbcTemplate;
private final JdbcTemplate secondaryJdbcTemplate;
public UserService(@Qualifier("primaryDataSource") DataSource dataSource,
@Qualifier("secondaryDataSource") DataSource secondaryDataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.secondaryJdbcTemplate = new JdbcTemplate(secondaryDataSource);
}
// ...
}
```
上面的代码中,我们声明了一个 `UserService` 服务类,并在其中使用了两个数据源,一个是 `dataSource`,另一个是 `secondaryDataSource`。
其中,`@Qualifier` 注解用于指定要使用的数据源。在这里,我们分别使用了 `primaryDataSource` 和 `secondaryDataSource`,这两个名称与我们在配置类中声明的数据源名称相同。
这样,我们就可以在代码中使用多个数据源了。在需要使用不同数据源的地方,只需要使用对应的 `JdbcTemplate` 实例即可。
阅读全文