写点什么

druid 初始化连接池并获取连接总结

  • 2022 年 5 月 14 日
  • 本文字数:515 字

    阅读完需:约 2 分钟

之前几天由于时间有限,看到的代码都比较片面,虽然初始化连接池的代码各部分都看了七七八八,但是整体的流程和各部分的关系了解的还不够多,今天就通过流程图的方式总结下整体的流程,帮助自己更清晰的理解代码逻辑。下面是 init()方法的流程。

接下来如果有 filter 就调用 filter 的 dataSource_connect(this, maxWaitMillis),通过责任链模式调用一系列 filter 后再返回可用连接。

        if (this.pos < filterSize) {            DruidPooledConnection conn = nextFilter().dataSource_getConnection(this, dataSource, maxWaitMillis);            return conn;        }
return dataSource.getConnectionDirect(maxWaitMillis);
复制代码

最终也是调用 getConnectionDirect(),接下来是 getConnectionDirect()的流程图。


在连接可用性检测的地方逻辑还是非常复杂的,最终的判断方式都是执行设置的连接校验语句

stmt = conn.createStatement();if (getValidationQueryTimeout() > 0) {    stmt.setQueryTimeout(validationQueryTimeout);}rset = stmt.executeQuery(validationQuery);if (!rset.next()) {    return false;}
复制代码

整个逻辑已经梳理清楚,接下来就是对自己一些不明白的逻辑点进行一些理解和查阅。

用户头像

还未添加个人签名 2021.05.30 加入

还未添加个人简介

评论

发布
暂无评论
druid初始化连接池并获取连接总结_五月月更_爱晒太阳的大白_InfoQ写作社区