1.请先排除拼写错误,比如如下配置文件中的内容,你能看出上面哪儿出错了吗?
# 最小空闲
sftp.client.minldle=10
# 最大空闲
sftp.client.maxldle=50
实际上应该是这个:
# 最小空闲
sftp.client.minIdle=10
# 最大空闲
sftp.client.maxIdle=50
原因就在于大写的i和小写的L,看起来很像
2.连接池校验连接是否失效时,明明配置了如下配置为true,但是仍旧存在连接失效问题
# 取对象时验证
sftp.client.testOnBorrow=true
断点调试发现每次取连接池连接时,未调用下面校验连接的方法
看sftpPoolConfig.java的父类GenericObjectPoolConfig的父类BaseObjectPoolConfig代码中的getter和setter
发现是子类sftpPoolConfig.java里没有显示重写boolean类型的getter和setter方法,这样导致lombok等其他生成的关于boolean的getter的方法是isTestOnBorrow(),不是getTestOnBorrow()方法,这样在框架底层调用get方法时,就只能用sftpPoolConfig.java类父类的get方法,就导致没有让配置文件里的参数生效
验证:在target里看编译后的代码
总结:关于boolean类型的变量,getter方法要手动重写。不要用lombok等去生成