mysql默认连接超时时间为8小时,Spring配置mysql连接池时,长时间不用连接句柄,会造成连接超时,主要是数据库断掉了连接,而程序本身不知道,继续用着已经关闭的连接就会报错,有三种作法可以解决这个问题,一种是改变mysql的my.ini文件,在my.ini里添加wait_timeout=N秒;另外一种作法就是每次用到连接时都检查一下是否超时,不过,这个作法相法不高明;还有一种作法就是利用org.apache.commons.dbcp.BasicDataSource里本身的配置:testWhileIdle,GenericObjectPool中针对pool管理,起了一个Evict的TimerTask定时线程进行控制(可通过设置参数timeBetweenEvictionRunsMillis>0),定时对线程池中的链接进行validateObject校验,对无效的链接进行关闭后,会调用ensureMinIdle,适当建立链接保证最小的minIdle连接数;validateQuery,代表检查的sql;numTestsPerEvictionRun,代表每次检查链接的数量,建议设置和maxActive一样大,这样每次可以有效检查所有的链接,一般的配置如下:mysql默认连接超时时间为8小时,Spring配置mysql连接池时,长时间不用连接句柄,会