【Java】全网最详细的SpringBoot集成HikariCP连接池配置

前言

  从 SpringBoot2.0 版本开始,使用HikariCP 做为默认的数据库连接池, HikariCP 在性能上表现优异,被公认为是最快的 JDBC 连接池之一,它还具有良好的稳定性和广泛的兼容性,能够与大多数主流的 JDBC 框架和数据库引擎无缝集成。因此,无论是从性能还是从易用性的角度来看,HikariCP 都是目前springboot项目的首选,如果大家在搭建框架需要HikariCP可以直接看本篇文章,详细配置可以直接复制使用。

一、HikariCP 配置

  在yml文件中我们可以通过spring:data:source:type指定连接池,通过配置type为com.zaxxer.hikari.HikariDataSource指定HikariCP做为连接池,如果使用springboot2.0及以上不配置type默认使用HikariCP:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/dbname
    username: root
    password: Droot
    driver-class-name: com.mysql.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      # 连接池中允许的最小连接数。缺省值:10
      minimum-idle: 10
      # 连接池中允许的最大连接数。缺省值:10
      maximum-pool-size: 20
      # 自动提交 默认值为 true
      auto-commit: true
      # 连接允许在池中闲置的最长时间,一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
      idle-timeout: 600000
      # 连接池名字,用于日志和监控
      pool-name: mysql-pool
      # 一 个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒
      max-lifetime: 600000
      # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒
      connection-timeout: 30000
      #连接测试查询语句,用于验证连接是否有效
      connection-test-query: select 1
      #验证连接有效性的超时时间,单位为毫秒,默认值 5000 毫秒(5 秒)
      validation-timeout: 30000
      #设置事务隔离级别,不配置此项默认遵从数据库的配置,读已提交TRANSACTION_READ_COMMITTED,此外还有读未提交TRANSACTION_READ_UNCOMMITTED,可重复度TRANSACTION_REPEATABLE_READ,串行化TRANSACTION_SERIALIZABLE
      transaction-isolation: TRANSACTION_READ_COMMITTED
      #是否将连接设置为只读模式,默认false
      readOnly: false

参数释义:

参数说明缺省值
minimum-idle连接池中允许的最小连接数。缺省值:10;如果空闲连接低于此值并且连接池中的总连接数少于maximumPoolSize值,则HikariCP将尝试创建新的连接。考虑到系统的内存和 CPU 资源,过大的 minimum-idle 可能会导致资源浪费。通常,minimum-idle 的值可以设置为 maximum-pool-size 的一半或更小。10
maximum-pool-size连接池中允许的最大连接数。缺省值:10,这个值将决定到数据库后端的最大实际连接数。对此的合理价值最好由您的执行环境决定,根据实际环境配置,通常设置为核心数的2倍较优10
auto-commit自动提交 默认值为 truetrue
idle-timeout连接允许在池中闲置的最长时间,一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟600000
pool-name连接池名字,用于日志和监控
aumax-lifetime一 个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒1800000
connection-timeout等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒30000
connection-test-query连接测试查询语句,用于验证连接是否有效
validation-timeout验证连接有效性的超时时间,单位为毫秒,默认值 5000 毫秒(5 秒)5000
transaction-isolation设置事务隔离级别,不配置此项默认遵从数据库的配置,读已提交TRANSACTION_READ_COMMITTED,此外还有读未提交TRANSACTION_READ_UNCOMMITTED,可重复度TRANSACTION_REPEATABLE_READ,串行化TRANSACTION_SERIALIZABLE
readOnly是否将连接设置为只读模式,默认falsefalse

为了帮助更多像你一样的读者,我将持续在专栏中分享技术干货和实用技巧。如果你觉得这篇文章对你有帮助,可以考虑关注我的专栏,谢谢。

### Spring Boot 整合 HikariCP 数据源配置教程 #### 配置文件设置 对于大多数应用程序而言,在 `application.properties` 或者 `application.yml` 文件中指定数据源属性就足够了。由于 Spring Boot 2 已经默认集成HikariCP[^1],只需要定义数据库连接的相关参数。 如果采用的是 `.properties` 文件,则可以按照下面的方式进行配置: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 如果是使用 YAML 格式的配置文件 (`application.yml`) ,则相应的配置如下所示: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver ``` 这些基本配置项已经足以让应用通过 HikariCP 建立与 MySQL 数据库之间的连接。 #### 自定义 HikariCP 属性 除了上述的基础配置外,还可以进一步调整 HikariCP 的行为来优化性能或满足特定需求。例如小空闲连接数、等待超时时间等都可以被自定义。以下是部分可选配置的例子: ```properties # 设置HikariCP大连接数量,默认为10 spring.datasource.hikari.maximum-pool-size=20 # 设置HikariCP小空闲连接数,默认值由具体实现决定 spring.datasource.hikari.minimum-idle=5 # 当所有连接都被占用时,新请求等待的时间(毫秒),超过该时间抛出异常,-1表示无限期等待 spring.datasource.hikari.connection-timeout=30000 ``` 以上配置同样适用于 `.yml` 文件格式,只需适当修改缩进即可适用 YAML 语法规范。 #### 测试配置有效性 为了验证配置是否正确无误以及确认能够成功建立数据库连接,可以在项目启动完成后尝试执行简单的查询操作。这可以通过编写单元测试或者直接在控制台日志观察是否有错误提示来进行初步判断。另外也可以利用 Spring Data JPA 提供的功能快速创建 Repository 接口并调用其内置的方法完成这项工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值