Spring-boot_1.4.2数据源配置

时间:2017-01-10 10:15:19

标签: spring spring-boot

最近我迁移到最新的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个连接,这是默认配置。

我缺少哪些额外配置?

1 个答案:

答案 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