1、简介
在本文中,我们将测试 Druid 连接池配置参数 testOnBorrow 的作用。
2、环境
os-window10
druid-1.2.8
jdk-1.8.0_312
maven-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 后断开电脑网络后,在下次获取连接时系统会报错,连接上网络后系统恢复正常,连接也能获取成功,并且报错前和报错后获取到的连接不同,断网前的连接会被丢弃。
评论