druid validationQuery不配置,启动时获取到validConnectionChecker 还是做SQL验证

pbwdgjma  于 2021-11-27  发布在  Java
关注(0)|答案(4)|浏览(835)

validationQuery不配置,启动时获取到validConnectionChecker 还是做SQL验证,
不符合作者的说法啊,为什么这个启动验证难道在1.0.19 这个版本里关不掉吗?

vatpfxk5

vatpfxk51#

并且,我看了下DruidDataSource的源码validConnectionChecker时默认示例化的,validConnectionChecker中对于validationQuery是否为空也没有检验,请问作者时这是BUG马?

7cjasjjr

7cjasjjr2#

testWhileIdle/testOnBorrow/testOnReturn配置为true了之后,还是会使用validConnectionChecker的

j7dteeu8

j7dteeu83#

全部配置为false也还是会,我已经看到了代码了,你没有对是否需要使用validConnectionChecker 做校验,默认是初始化validConnectionChecker 并且直接就调用验证方法了,没有判断,具体代码在DruidAbstractDataSource 类的1249行 只要validConnectionChecker 不为空,直接判断了。

l7wslrjt

l7wslrjt4#

public void validateConnection(Connection conn) throws SQLException {
    String query = getValidationQuery();
    if (conn.isClosed()) {
        throw new SQLException("validateConnection: connection closed");
    }

    if (null != query) {
        if (validConnectionChecker != null) {
            if (!validConnectionChecker.isValidConnection(conn, query, validationQueryTimeout)) {
                throw new SQLException("validateConnection false");
            }
            return;
        }
    }
}

并没有对testWhileIdle/testOnBorrow/testOnReturn 是否为false进行判断。

相关问题