dynamic-datasource-spring-boot-starter 配置连接池
时间: 2023-08-29 15:13:53 浏览: 71
dynamic-datasource-spring-boot-starter 是一个 Spring Boot 的数据源动态切换组件,可以方便地实现多数据源的配置和切换。它支持常见的连接池,如 HikariCP、Tomcat JDBC 等。
以下是使用 dynamic-datasource-spring-boot-starter 配置连接池的步骤:
1. 添加依赖
在 pom.xml 文件中添加以下依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.1</version>
</dependency>
```
2. 配置数据源
在 application.yml 文件中配置数据源,例如:
```yml
spring:
datasource:
dynamic:
primary: db1
datasource:
db1:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
username: root
password: root
db2:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/db2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10
username: root
password: root
```
此处配置了两个数据源 db1 和 db2,其中 db1 为主数据源。
3. 配置连接池
在 application.yml 文件中配置连接池,例如:
```yml
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 10
minimum-idle: 5
idle-timeout: 60000
connection-timeout: 30000
auto-commit: true
pool-name: HikariCP
max-lifetime: 1800000
connection-test-query: SELECT 1
```
此处使用了 HikariCP 连接池,配置了连接池的一些参数,如最大连接数、最小空闲连接数、连接空闲超时时间等。
4. 注册数据源
在 Spring Boot 启动类中注册数据源,例如:
```java
@SpringBootApplication
@MapperScan(basePackages = "com.example.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
@ConfigurationProperties("spring.datasource.hikari")
public DataSource dataSource() {
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
@Bean
public DataSourceProvider dataSourceProvider(DataSource dataSource) {
return new SingleDataSourceProvider(dataSource);
}
@Bean
public DynamicDataSourceCreator dynamicDataSourceCreator(DataSourceProvider dataSourceProvider) {
DynamicDataSourceCreator creator = new DynamicDataSourceCreator();
creator.setDataSourceProvider(dataSourceProvider);
return creator;
}
@Bean
public DynamicDataSourceRegister dynamicDataSourceRegister(DynamicDataSourceCreator dynamicDataSourceCreator) {
DynamicDataSourceRegister register = new DynamicDataSourceRegister();
register.setDynamicDataSourceCreator(dynamicDataSourceCreator);
return register;
}
}
```
此处使用了 HikariCP 连接池,使用了 @ConfigurationProperties 注解将连接池的配置读取到 DataSource 中,然后将 DataSource 注册到 DynamicDataSourceProvider 中,最后通过 DynamicDataSourceCreator 和 DynamicDataSourceRegister 将数据源注册到 Spring 中。
至此,我们已经完成了 dynamic-datasource-spring-boot-starter 的连接池配置。