什么是正确的? dbcp/dbcp2/tomcat 验证查询

what is right? dbcp/dbcp2/tomcat validation-query

我需要在 Spring 引导时创建连接重新连接。许多示例显示如下:

spring.datasource.validationQuery=SELECT 1

但 Intellij IDE 看不到并显示:

spring.datasource.dbcp.validation-query=select 1

spring.datasource.dbcp2.validation-query=select 1 

spring.datasource.tomcat.validation-query=select 1

什么是对的?

在 Spring 1.4 之前,所有连接池提供程序(Tomcat、Apache DBCP、Apache DBCP v2、Hikari、...)都使用相同的属性,例如:

spring.datasource.validationQuery=select 1

根据连接池供应商的不同,您可以使用不同的属性。不仅如此,其中一些属性并未用于配置 vendor-specific 属性,但也被 Spring 引导使用。所以他们相当 ambiguous.

从 1.4 开始,Spring 引导属性在 spring.datasource.* 内,而连接池属性在 spring.datasource.tomcat.*spring.datasource.dbcp.* 或....


要回答您的问题,如果您使用的是 Spring boot 1.3 或更低版本,则正确答案是:

spring.datasource.validationQuery=select 1

如果您使用 Spring boot 1.4 或更高版本的默认 tomcat-jdbc 连接池,正确答案是:

spring.datasource.tomcat.validationQuery=select 1

您提供的其他选项仅在您使用 Spring boot 1.4 或更新版本并且覆盖默认连接池提供程序时才有效。


除此之外,您可以选择是否要使用驼峰式 (validationQuery) 或 kebab-case (validation-query),两者都可以在 [=38 的任何版本上正常工作=]启动。