如何在springboot中配置多个数据源

1. 配置数据库详细信息

首先,我们将配置多个数据源,在application.properties文件中提供详细信息.

1
2
3
4
5
6
7
8
9
10
11
12
13

#primary db
spring.primary.jdbcUrl=jdbc:postgresql://localhost:5432/test
spring.primary.username=postgres
spring.primary.password=test
spring.primary.driverClassName=org.postgresql.Driver

#secondory db
spring.secondary.jdbcUrl=jdbc:mysql://localhost:3306/test
spring.secondary.username=root
spring.secondary.password=test
spring.secondary.driverClassName=com.mysql.jdbc.Driver

Config.java

分别创建两个数据源, 两个JdbcTemplate.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

@Bean
@ConfigurationProperties(prefix = "spring.primary")
public DataSource primaryDatasource() {
return DataSourceBuilder.create().build();
}

@Bean
@ConfigurationProperties(prefix = "spring.secondary")
@Primary
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}

@Bean
public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDatasource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}

@Bean
public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}

2. 使用jdbcTemplate

创建了两个数据源以及jdbcTemplate后, 我们就可以在任意的class中使用了.

使用之前先引入相应的jdbcTemplate. 例如

InsertController.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

@RestController
public class InsertController {

@Autowired
@Qualifier("primaryJdbcTemplate")
JdbcTemplate posgreJdbc;

@Autowired
@Qualifier("secondaryJdbcTemplate")
JdbcTemplate mysqlJdbc;

@RequestMapping("/insert")
public String insert(){
posgreJdbc.execute("insert into test_user(id, name,email)values(1, 'javatpoint','java@javatpoint.com')");
return"data inserted Successfully";
}
}

3. 参考文档