最近我迁移到最新的spring-boot版本(1.4.2).我观察到一些旧的属性更受支持.
旧配置
spring.datasource.max-active=1 spring.datasource.validation-query=/* ping */ SELECT 1 spring.datasource.test-on-borrow=true spring.datasource.initial-size=1
新配置
spring.datasource.dbcp.max-active=1 spring.datasource.dbcp.validation-query=/* ping */ SELECT 1 spring.datasource.dbcp.test-on-borrow=true spring.datasource.dbcp.initial-size=1
迁移到新配置后,我的应用程序仍在使用10连接,这是默认配置.
我错过了哪些附加配置?
根据文档,默认情况下,Spring引导使用Tomcat JDBC.它也默认包含在spring-boot-starter-jdbc中,它包含在spring-boot-starter-data-jpa中.
我们更喜欢将Tomcat池化DataSource用于其性能和并发性,因此如果可用,我们总是选择它.
否则,如果HikariCP可用,我们将使用它.
如果Tomcat池数据源和HikariCP都不可用,并且Commons DBCP可用,我们将使用它,但我们不建议在生产中使用它.
最后,如果Commons DBCP2可用,我们将使用它.
这意味着您应该使用spring.datasource.tomcat.*
属性,例如:
spring.datasource.tomcat.max-active=1 spring.datasource.tomcat.validation-query=/* ping */ SELECT 1 spring.datasource.tomcat.test-on-borrow=true spring.datasource.tomcat.initial-size=1
或者,如果您更喜欢DBCP,则可以通过定义spring.datasource.type
属性并提供连接池实现的完全限定名称来实现.在这种情况下,您将不得不使用maxTotal
,因为maxActive
根据DBCP的文档不存在.
请记住,将正确版本的DBCP添加到类路径中.如果您要添加1.x,则可以使用spring.datasource.dbcp.*
属性(如您使用的那样),但是,如果您使用的是2.x,则应使用以下spring.datasource.dbcp2.*
属性:
# Commons DBCP 1.x spring.datasource.dbcp.max-total=1 spring.datasource.dbcp.validation-query=/* ping */ SELECT 1 spring.datasource.dbcp.test-on-borrow=true spring.datasource.dbcp.initial-size=1 spring.datasource.type=org.apache.commons.dbcp.BasicDataSource # To override the default classpath lookup behaviour # Commons DBCP 2.x spring.datasource.dbcp2.max-total=1 spring.datasource.dbcp2.validation-query=/* ping */ SELECT 1 spring.datasource.dbcp2.test-on-borrow=true spring.datasource.dbcp2.initial-size=1 spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource # To override the default classpath lookup behaviour