怎么配置使用HikariCP数据源
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"怎么配置使用HikariCP数据源",在日常操作中,相信很多人在怎么配置使用HikariCP数据源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么配
千家信息网最后更新 2026年11月03日怎么配置使用HikariCP数据源
这篇文章主要介绍"怎么配置使用HikariCP数据源",在日常操作中,相信很多人在怎么配置使用HikariCP数据源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么配置使用HikariCP数据源"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
使用场景
HikariCP 这个数据源号称是最快的数据源。 其实个人认为 性能肯定还是在SQL语句和数据库。而且 这个数据源功能其实并不多。
个人不喜欢使用 将其作为主数据源。
druid 数据源对比
但是 如果将 HikariCP 作为读取 读取第三方 数据库 也就是多数据源来 使用,个人认为是非常适合的。
多数据源配置
package com.door.remote.dataSource;import cn.hutool.cache.CacheUtil;import cn.hutool.cache.impl.TimedCache;import cn.hutool.db.Db;import com.door.common.constants.DbConst;import com.door.common.constants.biz.dr.DbSetType;import com.door.entity.dr.AcDrDbSource;import com.door.utils.db.CfsDatabase;import com.zaxxer.hikari.HikariDataSource;import lombok.extern.log4j.Log4j2;import org.apache.commons.lang3.StringUtils;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;import javax.sql.DataSource;import java.sql.SQLException;/** * 数据源管理器 * * @author oumin * @date 2021/1/23 10:01 */@Component@Log4j2public class DataSourceManager { // 24 小时超时 private static final long timeOut = 24 * 60 * 60 * 1000L; private final Object createLock = new Object(); private static final TimedCache timedDataSourceCache = CacheUtil.newTimedCache(timeOut); @PostConstruct // 初始化方法的注解方式 等同与init-method=init public void init() { // 启动定时任务,每 xx 毫秒 检查一次过期 timedDataSourceCache.schedulePrune(timeOut); } /** * 获取数据源 * * @return */ public DataSource getAndMaybePut(CfsDatabase cfsDatabase) { String key = cfsDatabase.toString(); DataSource curr = timedDataSourceCache.get(key); if (curr == null) { synchronized (this.createLock) { curr = timedDataSourceCache.get(key); if (curr == null) { timedDataSourceCache.put(key, this.createDataSource(cfsDatabase)); } return timedDataSourceCache.get(key); } } else { return curr; } } private DataSource createDataSource(CfsDatabase cfsDatabase) { HikariDataSource dataSource = new HikariDataSource(); dataSource.setDriverClassName(DbConst.getDbDriverByDbType(cfsDatabase.getDbType())); if (DbSetType.DB_MYSQL.getName().equalsIgnoreCase(cfsDatabase.getDbType())) { // 兼容 MYSQL8 时区,和 指定连接超时 connectTimeout=20000 , 和 不使用 SSL: characterEncoding=utf- 8&useSSL=false&serverTimezone=Hongkong String timeZone = cfsDatabase.getTimeZone(); String url = cfsDatabase.getUrl(); String urlDb = ""; if (StringUtils.isNoneBlank(timeZone)) { urlDb = DbConst.MYSQL_URL + url + DbConst.MYSQL_STR + timeZone + DbConst.MYSQL_TIME_OUT; } else { // 如果timeZone 为空,mysql就用默认的时区 urlDb = DbConst.MYSQL_URL + url + DbConst.MYSQL_STR_ZOOR + DbConst.MYSQL_TIME_OUT; } dataSource.setJdbcUrl(urlDb); } else { dataSource.setJdbcUrl(cfsDatabase.getUrl()); } dataSource.setUsername(cfsDatabase.getUserName()); dataSource.setPassword(cfsDatabase.getPassword()); // dataSource.setPassword(PasswordKey.getDecodePassword(source.getDatasourcePassword())); dataSource.setMaximumPoolSize(10); dataSource.setMinimumIdle(1); // 默认 30S // dataSource.setConnectionTimeout(source.getConnTimeout()); // 修复 连接超时异常 // 默认false . 目前业务都是查询而已 // dataSource.setReadOnly(true); 只读模式,如果数据库支持 只读模式才有优化效果,否则没有 // 单位都是毫秒以下的 dataSource.setIdleTimeout(60 * 1000L); dataSource.setValidationTimeout(3 * 1000L); dataSource.setMaxLifetime(300 * 1000L); // mysql 和 Oracle 使用 SELECT 1 FROM DUAL ,其他 数据库 使用 select 1 // 虽然 官网 不推荐配置这个 TestQuery 而是在数据库支持JDBC4规范的情况下就不要配置。但是避免麻烦还是配置加上了 dataSource.setConnectionTestQuery(DbConst.getTestSQL(cfsDatabase.getDbType())); dataSource.setPoolName("数据源ID" + cfsDatabase.getSourceId()); return dataSource; } /** * 测试SQL * * @param sql 测试SQL * @param dbSource 测试数据源 */ public void testSQL(String sql, AcDrDbSource dbSource) throws SQLException { log.info("测试SQL :{}", sql); CfsDatabase database = CfsDatabase.converterByDataSource(dbSource); DataSource dataSource = this.getAndMaybePut(database); Db.use(dataSource).query(sql); }} 到此,关于"怎么配置使用HikariCP数据源"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
数据
数据源
配置
数据库
学习
测试
个人
方法
时区
更多
模式
还是
帮助
支持
实用
最快
接下来
业务
也就是
任务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州大一互联网络科技有限公司
互联网金融监管科技数据
重庆互联网络科技
互联网 科技创业
安徽鑫晟辉互联网科技
远拓互联网科技
太原新华互联网科技学校怎么样
互联网科技公司招聘
老年人脱离互联网科技的作文
农村开互联网科技讲堂
北京三清互联网科技
科技与互联网哪个更好
互联网企业和科技型企业
栖莱科技互联网股份有限公司
互联网科技公司实习生
用友工业互联网科技发展
合肥互联网科技公司公章图片
广州智享互联网科技
福仕德教育科技互联网
广东猫王互联网科技有限公司电话
互联网科技工作委员会主任
科技创新互联网企业
互联网科技logo设计
沃里互联网科技
天下捷融互联网科技
掌上梦互联网科技
现代科技和互联网有关系吗
移动互联网科技股
河南猎农互联网科技有限公司
佛山市拉法互联网科技有限公司