HikariCP-SpringBoot默认使用的连接池介绍

HikariCP是什么

HikariCP(简称 Hikari)是一个高性能的 JDBC 连接池实现,用于管理和提供数据库连接。它是由日本人许成林(Brett Wooldridge)开发的,是目前广泛应用于 Java 开发中的一种连接池实现。

以下是 HikariCP 的一些特点和优势:

  1. 高性能: HikariCP 以高性能著称,通过使用低开销的并发访问机制、有效地利用线程池、采用轻量级的对象池等技术,使得在高负载情况下依然能够保持稳定的性能表现。

  2. 轻量级: HikariCP 的代码精简、依赖少,不依赖于其他第三方库,因此具有较小的内存占用和较低的启动时间。这使得它非常适合于内存有限的环境或者需要快速启动的场景。

  3. 自动管理: HikariCP 提供了自动的连接池管理机制,包括连接的获取、释放、空闲连接的回收等操作。它会根据配置参数自动调整连接池的大小,以适应不同负载下的需求。

  4. 可配置性强: HikariCP 提供了丰富的配置选项,可以通过配置文件或者编程方式来调整连接池的行为,如连接超时时间、最大连接数、最小空闲连接数、连接生命周期等。

  5. 适用性广: HikariCP 支持主流的 JDBC 数据库,并且与各种 Java 框架(如 Spring、Hibernate 等)无缝集成,使得它可以广泛应用于各种 Java 应用程序中。

总的来说,HikariCP 是一个高性能、轻量级、自动管理的 JDBC 连接池,具有良好的可配置性和广泛的适用性,是 Java 开发者构建高效、稳定的数据库访问组件的理想选择。

在springboot中使用HikariCP

在 Spring Boot 中使用 HikariCP 是非常简单的,因为 Spring Boot 默认就已经集成了 HikariCP 作为默认的数据源实现。你只需要在 application.propertiesapplication.yml 文件中配置数据源相关的参数,Spring Boot 就会自动配置 HikariCP 数据源。

以下是在 Spring Boot 中使用 HikariCP 的基本步骤:

  1. 添加 HikariCP 依赖: 如果你是使用 Maven 进行项目管理,那么不需要额外添加 HikariCP 依赖,因为 Spring Boot 默认已经包含了 HikariCP。如果你手动管理依赖,则需要确保项目中包含 HikariCP 的依赖。
<!-- HikariCP 依赖已经在 Spring Boot Starter JDBC 或 Spring Boot Starter Data JPA 中包含 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
  1. 配置数据源参数:application.propertiesapplication.yml 文件中添加数据源的配置参数,如下所示:
# application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.maximum-pool-size=10

在这个示例中,我们配置了一个名为 spring.datasource 的数据源,使用了 HikariCP。你可以根据自己的需要调整连接池的配置参数,如连接超时时间、最大连接数等。

  1. 使用数据源: 配置完成后,你可以在你的应用程序中注入数据源,然后使用它来执行数据库操作。例如,你可以注入 JdbcTemplate 或者 DataSource,并在业务逻辑中使用它们来执行 SQL 操作。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    private final JdbcTemplate jdbcTemplate;

    @Autowired
    public MyService(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public void performDatabaseOperation() {
        jdbcTemplate.execute("CREATE TABLE IF NOT EXISTS my_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255))");
    }
}

在这个示例中,我们注入了一个 JdbcTemplate,它会自动使用我们配置的 HikariCP 数据源来执行 SQL 操作。

  1. 启动应用程序: 最后,启动你的 Spring Boot 应用程序,HikariCP 将会自动初始化连接池,并且准备好可用的数据库连接。你可以在应用程序中自由地使用数据库连接来进行数据库操作。

通过以上步骤,你就可以在你的 Spring Boot 项目中使用 HikariCP 数据源了。

HikariCP 相关配置

  1. dataSourceClassName 或 driverClassName: 数据源类名或驱动类名,根据你所使用的数据库类型进行设置。

  2. jdbcUrl: 数据库连接 URL。

  3. username 和 password: 数据库用户名和密码。

  4. connectionTimeout: 连接超时时间,单位为毫秒,默认为 30 秒。指的是从连接池获取连接时等待的最长时间,超过该时间将抛出异常。

  5. idleTimeout: 连接空闲超时时间,单位为毫秒,默认为 600 秒。指的是连接在连接池中保持空闲状态的最长时间,超过该时间将被关闭并从连接池中移除。

  6. maxLifetime: 连接最大生命周期,单位为毫秒,默认为 1800 秒。指的是连接在连接池中保持活动状态的最长时间,超过该时间将被关闭并从连接池中移除。

  7. maximumPoolSize: 连接池最大连接数,默认为 10。指的是连接池中允许存在的最大连接数,超过该数目的连接将不会被创建。

  8. minimumIdle: 连接池最小空闲连接数,默认为与 maximumPoolSize 相同。指的是连接池中保持空闲状态的最小连接数,如果空闲连接数少于该值,连接池会创建新的连接。

  9. initializationFailTimeout: 连接池初始化失败超时时间,单位为毫秒,默认为 1 秒。指的是连接池初始化时如果发生错误,等待重试的最长时间。

  10. leakDetectionThreshold: 连接泄露检测阈值,单位为毫秒,默认为 0,表示禁用泄露检测。指的是当连接在从连接池中获取后,返回连接池之前的时间超过该阈值时,将被视为泄露连接。

  11. poolName: 连接池名称,默认为 “HikariPool-{n}”。指的是连接池的名称,用于日志记录和调试。

  12. metricRegistry: 指定 MetricRegistry 实例,用于记录连接池的指标信息。

  13. healthCheckRegistry: 指定 HealthCheckRegistry 实例,用于进行连接池的健康检查。

  14. allowPoolSuspension: 是否允许暂停连接池,默认为 false。指的是当连接池暂停时,是否允许连接池暂停所有的操作。

  15. readOnly: 是否只读连接,默认为 false。指的是是否将连接标记为只读,以便一些数据库可以做一些优化。

  16. registerMbeans: 是否注册 MBeans,默认为 false。指的是是否在 JMX 中注册连接池的管理 Bean。

  17. catalog: 默认数据库目录,默认为 ""。指的是默认情况下使用的数据库目录,用于在数据库连接的生命周期内设置 SET CATALOG

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pineux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值