文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spring Boot 使用 HikariCP 连接池配置详解

2023-08-18 13:38

关注

Spring Boot 使用 HikariCP 连接池配置详解

HikariCP 是一个高性能的 JDBC 连接池组件。

Spring Boot 2.x 将其作为默认的连接池组件,项目中添加 spring-boot-starter-jdbcspring-boot-starter-data-jpa 模块后,HikariCP 依赖会被自动引入。

快速使用

1)在你的 Spring Boot 项目中添加依赖配置:

    org.springframework.boot    spring-boot-starter-jdbc

注意:以下常用的 ORM 组件中已经包含了 JDBC 依赖,不需要重复引入:

2)添加数据源配置:

## Spring HikaraDataSource Configuration# spring.datasource.type=com.zaxxer.hikari.HikariDataSource# spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# spring.datasource.name=HikariCP-1spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNullspring.datasource.username=rootspring.datasource.password=123456spring.datasource.hikari.connection-timeout=30000spring.datasource.hikari.idle-timeout=600000spring.datasource.hikari.max-lifetime=1800000spring.datasource.hikari.maximum-pool-size=100spring.datasource.hikari.minimum-idle=10spring.datasource.hikari.pool-name=HikaraPool-1

连接池配置详解

1)在 Spring Boot 项目中,一个简单的 Spring DataSource 配置,通常只需要设置数据库连接、用户名和密码三个参数。

## Spring DataSourceProperties# 设置连接池类型,默认自动获取(可选)spring.datasource.type=com.zaxxer.hikari.HikariDataSource# 设置数据库驱动,默认自动获取(可选)spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver# 生成唯一的数据源名称,设置与否,都会优先取 name 的值(可选)spring.datasource.generate-unique-name=true# 设置数据源名称,默认会生成唯一的数据源名称,如:HikariPool-1(可选)spring.datasource.name=HikariCP-1# 设置数据库连接(必选)spring.datasource.url=jdbc:mysql://localhost:3306/dbname?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull# 设置数据库用户名(必选)spring.datasource.username=root# 设置数据库密码(必选)spring.datasource.password=123456

2)在 Spring Boot 项目中, Spring DataSource 会使用默认的配置启用 HikaraCP 数据库连接池。我们也可以通过属性文件来优化 HikariCP 的配置项,尤其是连接池大小的设置。

## Spring HikariConfig# 事务自动提交 - 默认值:truespring.datasource.hikari.auto-commit=true# 连接测试查询 - Using the JDBC4 Connection.isValid() method to test connection validity can be more efficient on some databases and is recommended.# 如果你的驱动程序支持JDBC4,强烈建议不要设置此属性。spring.datasource.hikari.connection-test-query=select 1# 连接超时时间 - 默认值:30秒。spring.datasource.hikari.connection-timeout=30000# 连接池中允许闲置的最长时间 - 默认值:10分钟spring.datasource.hikari.idle-timeout=600000# 一个连接生命时长(毫秒),超时而没被使用则被释放 - 默认值:30分钟spring.datasource.hikari.max-lifetime=1800000# 连接池中允许的最大连接数,包括闲置和使用中的连接 - 默认值:10spring.datasource.hikari.maximum-pool-size=100# 连接池中允许的最小空闲连接数 - 默认值:10。spring.datasource.hikari.minimum-idle=10# 连接被测试活动的最长时间 - 默认值:5秒。spring.datasource.hikari.validation-timeout=5000# 指定连接池的名称 - 默认自动生成spring.datasource.hikari.pool-name=HikaraPool-1

多数据源配置

1)添加多数据源配置:

## Spring HikaraDataSource Configuration# spring.datasource.one.driver-class-name=com.mysql.cj.jdbc.Driver# spring.datasource.one.name=HikariCP-1spring.datasource.one.url=jdbc:mysql://localhost:3306/kaddo-sit?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNullspring.datasource.one.username=rootspring.datasource.one.password=123456spring.datasource.one.hikari.connection-timeout=30000spring.datasource.one.hikari.idle-timeout=600000spring.datasource.one.hikari.max-lifetime=1800000spring.datasource.one.hikari.maximum-pool-size=100spring.datasource.one.hikari.minimum-idle=10spring.datasource.one.hikari.pool-name=HikaraPool-1## Spring HikaraDataSource Configuration# spring.datasource.two.driver-class-name=com.mysql.cj.jdbc.Driver# spring.datasource.two.name=HikariCP-2spring.datasource.two.url=jdbc:mysql://localhost:3306/kaddo-uat?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&autoReconnect=true&autoReconnectForPools=true&noAccessToProcedureBodies=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNullspring.datasource.two.username=rootspring.datasource.two.password=123456spring.datasource.two.hikari.connection-timeout=30000spring.datasource.two.hikari.idle-timeout=600000spring.datasource.two.hikari.max-lifetime=1800000spring.datasource.two.hikari.maximum-pool-size=100spring.datasource.two.hikari.minimum-idle=10spring.datasource.two.hikari.pool-name=HikaraPool-2

2)创建多数据源:

@Bean@Primary@ConfigurationProperties("spring.datasource.one")public DataSourceProperties dataSourcePropertiesOne() {return new DataSourceProperties();}@Bean@Primary@ConfigurationProperties("spring.datasource.one.hikari")public HikariDataSource dataSourceOne(DataSourceProperties properties) {return createHikariDataSource(properties);}@Bean@ConfigurationProperties("spring.datasource.two")public DataSourceProperties dataSourcePropertiesTwo() {return new DataSourceProperties();}@Bean@ConfigurationProperties("spring.datasource.two.hikari")public HikariDataSource dataSourceTwo(@Qualifier("dataSourcePropertiesTwo") DataSourceProperties properties) {return createHikariDataSource(properties);}  @SuppressWarnings("unchecked")  private static  T createHikariDataSource(DataSourceProperties properties, Class type) {    return (T) properties.initializeDataSourceBuilder().type(type).build();  }    private static HikariDataSource createHikariDataSource(DataSourceProperties properties) {    HikariDataSource dataSource = createHikariDataSource(properties, HikariDataSource.class);    if (StringUtils.hasText(properties.getName())) {      dataSource.setPoolName(properties.getName());    }    return dataSource;  }

3)使用多数据源:

@Autowiredprivate HikariDataSource dataSourceOne;@Autowired@Qualifier("dataSourceTwo")private HikariDataSource dataSourceTwo;

配置多数据源的注意事项:

来源地址:https://blog.csdn.net/weixin_50549211/article/details/127795905

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯