zoukankan      html  css  js  c++  java
  • SpringBoot:关于默认连接池Hikari的源码剖析

    1.起因

    因为这两天在给公司的一个项目升级SpringBoot版本,遇到了一些坑,升级项目版本:SpringBoot1.5.x到SpringBoot2.0.x

    今天早上双库操作遇到一个问题:jdbcUrl is required with driverClassName

    在网上查询了一下将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", "org.apache.tomcat.jdbc.pool.DataSource", "org.apache.commons.dbcp2.BasicDataSource"};

     于是默认的就为Hikari连接池

  • 相关阅读:
    cpu时钟周期
    调参学习
    力扣:堆
    学习率衰减问题
    力扣:图之并查集问题
    Java判断空字符串
    python读取文件通过正则过滤需要信息然后保存到新文件里
    python换行写入文件
    Robotium solo.goBack();不起作用,解决方案
    Android清除本地数据缓存代码
  • 原文地址:https://www.cnblogs.com/fdzang/p/10315165.html
Copyright © 2011-2022 走看看