最近我迁移到最新的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个连接,这是默认配置。
我缺少哪些额外配置?
答案 0 :(得分:5)
根据the documentation,默认情况下,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
,因为根据the documentation of DBCP maxActive
不存在。
请记住将正确版本的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