SpringBoot:关于默认连接池Hikari的源码剖析1.起因
因为这两天在给公司的⼀个项⽬升级SpringBoot版本,遇到了⼀些坑,
今天早上双库操作遇到⼀个问题:jdbcUrl is required with driverClassName
spring boot选择题在⽹上查询了⼀下将url改为jdbc-url就可以了。
解决后,闲来⽆事,准备⼀探究竟。
2.url改为jdbc-url的原因
SpringBoot2.0默认使⽤了Hikari作为连接池
于是我们先到Hikari连接池的包
点开它的配置项:HikariConfig,搜索jdbcUrl,然后到原因:
这⾥原因就到了,Hikari没有url属性,与之对应的是jdbc-url属性
因此我们使⽤url时会导致:jdbcUrl is required with driverClassName(jdbcUrl没有传⼊)
3.SpringBoot2.0在哪⾥指定的默认连接池
我们⾸先先创建⼀个连接池
这⾥的DataSourceBuilder是
提供的,于是我们点击进去看看这个类
这⾥默认提供⽀持的数据库连接池有三种,那么SpringBoot实在哪⾥默认选择的呢?
我们继续看这个类
在build⽅法这⾥,有⼀个getType()⽅法,⼤概就在这⾥指定的类型吧
这⾥的意思就是,如果指定了连接池类型就是⽤当前类型,没有指定的话,就加载默认的连接池属性
于是我们再看findType⽅法
这⾥就是从DATA_SOURCE_TYPE_NAMES ⾥⾯加载连接池类型,默认从下标为0的加载
private static final String[] DATA_SOURCE_TYPE_NAMES = new String[]{"com.zaxxer.hikari.HikariDataSource", "at.jdbc.pool.DataSource", "org.apachemons.dbcp2.BasicDataSource"};于是默认的就为Hikari连接池
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论