当前位置:网站首页>四、HikariCP源码分析之初始化分析一
四、HikariCP源码分析之初始化分析一
2022-07-29 21:41:00 【InfoQ】
HikariDataSource的初始化
HikariDataSourceHikariDataSource两个构造函数
public HikariDataSource() {
super();
fastPathPool = null;
}
public HikariDataSource(HikariConfig configuration) {
configuration.validate();
configuration.copyState(this);
LOGGER.info("{} - Started.", configuration.getPoolName());
pool = fastPathPool = new HikariPool(this);
}
两种初始化方式
- 使用无参构造初始化
HikariDataSource dataSource = new HikariDataSource();
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("123");
//设置数据库独有的属性
dataSource.addDataSourceProperty("cachePrepStmts", "true");
//从连接池获取连接
Connection connection = dataSource.getConnection();
- 使用有参构造初始化
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/test");
config.setUsername("root");
config.setPassword("123");
//设置数据库独有的属性
config.addDataSourceProperty("cachePrepStmts", "true");
//使用HikariConfig构造HikariDataSource
HikariDataSource dataSource = new HikariDataSource(config);
//从连接池获取连接
Connection connection = dataSource.getConnection();
HikariConfigHikariDataSourceHikariConfigHikariConfig无参构造代码分析
super();
fastPathPool = null;
super();HikariDataSourceHikariConfigHikariDataSourceHikariConfigsuper();HikariConfigpublic HikariConfig() {
//①
dataSourceProperties = new Properties();
healthCheckProperties = new Properties();
minIdle = -1;
maxPoolSize = -1;
//MAX_LIFETIME=30分钟
maxLifetime = MAX_LIFETIME;
//CONNECTION_TIMEOUT=30 秒
connectionTimeout = CONNECTION_TIMEOUT;
//VALIDATION_TIMEOUT=5 秒
validationTimeout = VALIDATION_TIMEOUT;
//IDLE_TIMEOUT=10分钟
idleTimeout = IDLE_TIMEOUT;
isAutoCommit = true;
isInitializationFailFast = true;
//②
String systemProp = System.getProperty("hikaricp.configurationFile");
if (systemProp != null) {
loadProperties(systemProp);
}
}
- ①
- ②
System.getPropertyhikaricp.configurationFilehikaricp.configurationFilehikaricp.configurationFile-Dhikaricp.configurationFile=xxxxx.propertiesloadPropertiesHikariConfigfastPathPool = null;有参构造代码分析
configuration.validate();
configuration.copyState(this);
LOGGER.info("{} - Started.", configuration.getPoolName());
pool = fastPathPool = new HikariPool(this);
configuration.validate();configuration.copyState(this);configuration.copyState(this);thisHikariDataSourceconfigurationHikariConfigHikariConfigHikariDataSourcecopyStatepublic void copyState(HikariConfig other) {
for (Field field : HikariConfig.class.getDeclaredFields()) {
if (!Modifier.isFinal(field.getModifiers())) {
field.setAccessible(true);
try {
field.set(other, field.get(this));
} catch (Exception e) {
throw new RuntimeException("Failed to copy HikariConfig state: " + e.getMessage(), e);
}
}
}
}
HikariConfigthisHikariDataSourceHikariDataSourceHikariConfigpool = fastPathPool = new HikariPool(this);pool = fastPathPoolnew HikariPool(this)HikariPoolHikariPool边栏推荐
猜你喜欢

小程序预览pdf

An article to understand service governance in distributed development

Add obsolete flag to pdf

给pdf添加已作废标识

applet preview pdf

24小时伦敦金走势图分析

Add a logo to the upper left corner of the picture, add time and address to the lower left corner, and wrap the line when the address reaches the specified length

新库上线 | CnOpenData国际货运代理信息数据

全球都热炸了,谷歌服务器已经崩掉了

Numpy array processing (2)
随机推荐
高等数学(第七版)同济大学 习题3-8 个人解答
5 V booster charge 8.4 V chip
组合模式(Composite Pattern)
GBASE 8s 如何查看 sbspace 中的可用空间
VSCode 插件大全
数字孪生万物可视 | 联接现实世界与数字空间
GBASE 8s 用户标示与鉴别
数组和List互转
[BUG]memset和成员初始化的先后顺序
使用脚本安装mysql
《张卫国的夏天》欢乐来袭,黄磊、刘奕君携手演绎“冤种”兄弟
SAP MIGO 报错-在例程WERT_SIMULIEREN字段NEUER_PREIS中字段溢出
给pdf添加已作废标识
容器网络硬核技术内幕 (小结-下)
GBASE 8s 数据库的备份创建
华为畅享50 Pro评测:HarmonyOS加持 更流畅更安全
【Verilog 设计】Verilog 实现偶数、奇数分频和任意小数分频
GBASE 8s 数据库的大对象和日志备份
银河麒麟V10 SP2 x86编译安装 PHP7.4
GBASE 8s 数据库的智能大对象备份