多数据源 - dynamic-datasource | 集成 HikariCP 连接池
文章目录
- 连接池集成简介
- HikariCP 连接池
-
- 默认 HikariCP 配置
- 自定义 HikariCP 配置
- Druid 连接池
- BeeCp 连接池
- DBCP2 连接池
- JNDI 数据源
🗯️ 上节回顾:上一节中,实现了 dynamic-datasource 的快速入门。
👉 本节目标:在上一节的基础上,集成 HikariCP 数据库连接池并介绍原理。
🚀 本节内容:
- 连接池集成简介及原理
- HikariCP 连接池集成说明
- 其它连接池集成说明
🔊 版本
- JDK 17
- Spring Boot 3.2.1
- dynamic-datasource 4.3.0
- HikariCP 5.0.1
- Druid 1.2.21
连接池集成简介
dynamic-datasource 支持不同的连接池集成。连接池配置方式:
- 全局连接池配置:每个数据源都可以继承它
- 每个数据源使用 type 指定连接池,支持覆盖全局连接池配置。如果未指定,则按照 Druid > HikariCP > BeeCp > DBCP2 > Spring Basic。
- 每个数据源可以使用不同的连接池,但不推荐。比如 master 使用 Druid 连接池,slave 使用 HikariCP 连接池。
👉 连接池集成原理:先引入依赖 -> 然后添加配置 -> 最后根据配置来创建连接池
- 引入连接池依赖,比如 Druid、HikariCP 的 Spring Boot Starter
- 使用 dynamic-datasource 配置连接池配置
- 核心配置类:
DynamicDataSourceProperties
,前缀为spring.datasource.dynamic
- 连接池全局配置,比如 DruidConfig、HikariCpConfig
- 每个数据源的配置
- 核心配置类:
- 每个数据源的配置类:
DataSourceProperties
,包括 DataSource 基本信息、seata 支持、p6spy 支持、懒加载支持、初始化 SQL 配置、各个连接池配置、解密公钥等。
- 具体的连接池配置类和 Creator:比如
DruidConfig
、HikariCpConfig
- 比如 Druid,提供 DruidConfig 来配置 Druid,提供 DruidDataSourceCreator 来创建 DruidDataSource。
- 比如 HikariCP,提供 HikariCpConfig 来配置 HikariCP,提供 HikariDataSourceCreator 来创建 HikariDataSource。
HikariCP 连接池
HikariCP 是 SpringBoot 默认使用的连接池,即便我们没有添加任何连接池配置。
默认 HikariCP 配置
通过 debug,我们即可看到 HikariDataSource 默认配置如下:
- 固定连接池大小为 10
- 最大生命周期为 180000s = 30min
因为没有添加 HikariCp 配置,所以使用的都是默认配置:
自定义 HikariCP 配置
❓ 那么如何自定义 HikariCP 配置呢?
- 如果没有配置参数,则保持原组件默认值
- 如果配置了全局参数,则每个数据源都会继承对应参数
- 每个数据源可以单独设置参数覆盖全局参数
注意:HikariCP 原生设置某些字段名和 dynamic-datasource 不一致。以 dynamic-datasource 的为主,比如 auto-commit(HikariCp) -> is-auto-commit(dynamic-datasource)。
- HikariCP 字段名和其 set 名称不一致
- dynamic-datasource 则是使用参数名反射设置
👉 配置示例:
spring:
datasource