springboot注入多个数据源
时间: 2023-02-24 20:15:02 浏览: 198
在 Spring Boot 中注入多个数据源需要使用到 Spring Data JPA 和 Spring JDBC。
首先,需要定义多个数据源,每个数据源都对应一个独立的数据库连接。然后,可以在对应的 DAO 类或者 Service 类中根据需要选择使用哪个数据源。
以下是示例代码:
```
@Configuration
public class MultipleDataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "primaryJdbcTemplate")
public JdbcTemplate primaryJdbcTemplate(
@Qualifier("primaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(
@Qualifier("secondaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
```
然后在对应的 DAO 类或者 Service 类中选择使用对应的 JdbcTemplate 即可。
例如:
```
@Service
public class UserService {
private final JdbcTemplate primaryJdbcTemplate;
private final JdbcTemplate secondaryJdbcTemplate;
public UserService(
@Qualifier("primaryJdbcTemplate") JdbcTemplate primaryJdbcTemplate,
@Qualifier("secondaryJdbcTemplate") JdbcTemplate secondaryJdbcTemplate) {
this.primaryJdbcTemplate = primaryJdbcTemplate;
this.secondaryJdbcTemplate = secondaryJdbcTemplate;
}
public void saveUserToPrimaryDB(User user) {
primaryJdbcTemplate.update("insert into user(name, age) values (?, ?)", user.getName(), user.getAge());
}
public void saveUserToSecondaryDB(User user) {
secondaryJdbcTemplate.update("insert into user(name, age) values (?, ?)", user.getName(), user.getAge());
}
}
```
请注意,如果需要使用
阅读全文