怎么配置使用HikariCP数据源
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍"怎么配置使用HikariCP数据源",在日常操作中,相信很多人在怎么配置使用HikariCP数据源问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么配
千家信息网最后更新 2025年11月12日怎么配置使用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安全错误
数据库的锁怎样保障安全
荣耀互联网软件开发工程师
网络安全和前端谁更值得去学
数据库什么时候用索引
长沙雨花区明辰软件开发工作室
深受顾客欢迎的网络安全产业园
青岛企业软件开发代码
自动化时序数据库
软件开发合同法违约赔偿金额
广州附近的软件开发公司
互联网大会黑科技直连国外
vsco服务器连接失败怎么办
中国足球数据库
宝安网络安全服务联系方式
梦幻西游2烟花服务器
最新网络技术视频
南通c 软件开发
dayz服务器关闭了数据还有吗
日立笔记本电脑软件开发
it网络安全
城镇化统计年鉴数据库
荣耀互联网软件开发工程师
美图秀秀的软件开发者是谁
绿茶网络安全海报
泰国服务器租用
公安开展网络安全教育会议
网络安全认证登录界面
vb.net 数据库源码
手机软件开发app 开发工具
商业科技和互联网
魔兽怀旧哪个服务器不排队