Spring 多数据源配置是在一个应用程序里使用不同的数据源连接数据库,通过配置多个数据源,实现不同模块、不同业务区分对应的数据库连接。下面是详细攻略:
1. 添加依赖
首先在 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
其中,spring-boot-starter-jdbc
是 Spring Boot jdbc 连接库依赖,mysql-connector-java
是连接 MySQL 的驱动。druid-spring-boot-starter
是 Druid 数据库连接池依赖。
2. 创建数据源
在配置文件中配置多个数据源,以 MySQL 数据库为例:
spring:
# 默认的数据源配置
datasource:
url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai
username: root
password: root
# 数据源2配置
datasource2:
url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Shanghai
username: root
password: root
这里配置了两个数据源,分别是默认数据源(datasource
)和名为 datasource2
的数据源。
3. 配置数据源
在 Spring Boot 中使用多数据源,需要使用 @Configuration
和 @Bean
联合定义两个数据源,具体代码如下:
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSource dataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "datasource2")
@ConfigurationProperties("spring.datasource2")
public DataSource dataSource2(){
return DataSourceBuilder.create().build();
}
@Bean(name="jdbcTemplate")
public JdbcTemplate jdbcTemplate(
@Qualifier("dataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name="jdbcTemplate2")
public JdbcTemplate jdbcTemplate2(
@Qualifier("datasource2") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
在 DataSourceConfig
中定义了一个 dataSource
和一个名为 datasource2
的数据源。同时,定义了两个 JdbcTemplate
,分别针对两个数据源。
4. 数据源测试
接下来在 Spring Boot 项目中写一个测试方法,分别通过两个 JdbcTemplate
对两个数据源进行操作。
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class DataSourceConfigTest {
@Autowired
@Qualifier("jdbcTemplate")
protected JdbcTemplate jdbcTemplate;
@Autowired
@Qualifier("jdbcTemplate2")
protected JdbcTemplate jdbcTemplate2;
@Test
public void test() {
List<Map<String, Object>> result = jdbcTemplate.queryForList("SELECT * FROM table1");
System.out.println(result);
List<Map<String, Object>> result2 = jdbcTemplate2.queryForList("SELECT * FROM table2");
System.out.println(result2);
}
}
在 DataSourceConfigTest
中分别使用 jdbcTemplate
和 jdbcTemplate2
对两个数据源进行查询操作。
以上是 Spring Boot 多数据源配置的完整攻略。在实际开发中,还有更多的配置细节可以根据具体需求进行调整。以上代码仅供参考。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring多个数据源配置详解 - Python技术站