druid validationQuery和testOnborrow哪个优先生效?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在Druid连接池的配置中,validationQuery
和testOnBorrow
参数分别控制了不同的验证行为:
validationQuery
是指定了一个SQL查询语句,用于验证从连接池中取出的连接是否有效。当设置此参数后,Druid会在特定条件下执行这个查询来确保连接可用。
testOnBorrow
指定在从连接池获取连接时是否进行连接有效性测试。如果设置为true
,则每次borrow操作前都会执行validationQuery
来检查连接状态。
关于它们的优先级,实际上testOnBorrow
是一个控制是否执行验证的开关。如果testOnBorrow
设置为false
,即使配置了validationQuery
,在借取连接时也不会执行验证查询。反之,如果testOnBorrow
设置为true
,那么在借取连接之前,就会根据validationQuery
配置的SQL来验证连接的有效性。
因此,可以理解为testOnBorrow
逻辑上优先生效于validationQuery
:只有当testOnBorrow
被启用时,validationQuery
才会在借取连接时被执行。