写点什么

数据库连接池 -Druid 源码学习(六)

作者:wjchenge
  • 2022 年 5 月 17 日
  • 本文字数:666 字

    阅读完需:约 2 分钟

1、简介

在本文中,我们将测试 Druid 连接池配置参数 testOnBorrow 的作用。

2、环境

os-window10druid-1.2.8jdk-1.8.0_312maven-3.8.1
复制代码

3、不配置 testOnBorrow

3.1、启动测试类

DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl("jdbc:mysql://ip:port");dataSource.setUsername("name");dataSource.setPassword("password");
int i = 0;while (true) { try (DruidPooledConnection connection = dataSource.getConnection()) { System.out.println("获取到连接次数 = " + i++); } finally { TimeUnit.SECONDS.sleep(10); }}
复制代码

3.2、打印 获取到连接次数 = 0 断开电脑网络系统还能正常获取连接,控制台打印信息如下,但此时获取到的连接已无法与数据库进行交互,网络已断开,在执行业务 sql 的时候会报错。

4、配置 testOnBorrow


4.1 启动测试类

DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl("jdbc:mysql://ip:port");dataSource.setUsername("name");dataSource.setPassword("password");dataSource.setTestOnBorrow(true);dataSource.setValidationQuery("select 'x'");
while (true) { try (DruidPooledConnection connection = dataSource.getConnection()) { System.out.println("获取到连接 = " + connection); } finally { TimeUnit.SECONDS.sleep(5); }}
复制代码

4.2 打印 2 次 获取到连接 = xxx 后断开电脑网络后,在下次获取连接时系统会报错,连接上网络后系统恢复正常,连接也能获取成功,并且报错前和报错后获取到的连接不同,断网前的连接会被丢弃。


用户头像

wjchenge

关注

还未添加个人签名 2018.07.27 加入

还未添加个人简介

评论

发布
暂无评论
数据库连接池 -Druid 源码学习(六)_Druid_wjchenge_InfoQ写作社区