Spring Boot集成阿里巴巴druid时,如果你使用的是MySQL数据库,可能会在控制台不定时的输出以下警告信息
虽然这个警告信息不会影响程序的正常运行,但是这种日志不仅会让人感到疑惑,心理上也会比较难受。网上出现这种问题的很多,也有很多人提供了类似修改环境变量的方式进行屏蔽,但是经过我实测,都没有解决问题,即使设置了系统属性值,还是会出现。
问题分析
通过日志,我们可以看到,警告信息是c.a.druid.pool.DruidAbstractDataSource
这个类打印的,我们可以打开对应jar包的位置具体查看一下打印日志的方法
经过分析,可以看到这个问题的根源在于Druid连接池对MySQL连接的处理逻辑。在DruidAbstractDataSource
类的testConnectionInternal
方法中,如果连接空闲时间超过60秒,Druid会认为该连接已经不再有效,并将其丢弃。
解决办法
这里主要介绍两种处理方式,方法一是升级版本,升级到一个不打印警告的版本即可,第二方法可以通过druid.mysql.usePingMethod
系统属性禁用掉ping
检测。
方法一、升级版本
具体哪个版本去掉的提示我没细查,我这里是升级到了1.2.23
版本,可以确认这个版本不会打印这条警告信息,低于或者高于此版本都可能会再次打印这条警告信息。
方法二、设置系统属性
通过设置druid.mysql.usePingMethod=false
来避免使用MySQL的Ping方法来检查连接有效性。我是通过在启动类main
方法设置的
public static void main(String[] args) {
System.setProperty("druid.mysql.usePingMethod", "false");//去掉discard long time none received connection提示
SpringApplication.run(LeeFrameApplication.class, args);
System.out.println("启动成功");
}
评论 (0)