生产数据库连接也可以使用池进行自动配置 DataSource。Spring Boot使用以下算法来选择特定的实现:


  1. 我们更喜欢HikariCP的性能和并发性。如果HikariCP可用,我们总是选择它。
  2. 否则,如果Tomcat池DataSource可用,我们使用它。
  3. 如果HikariCP和Tomcat池数据源都不可用,并且 Commons DBCP2可用,那么我们使用它。


如果你使用spring-boot-starter-jdbcspring-boot-starter-data-jpa“starters”,你会自动获得依赖HikariCP


springboot连接多个mongdb_spring

您可以完全绕过该算法,并通过设置spring.datasource.type属性来指定要使用的连接池。如果您在Tomcat容器中运行应用程序,这tomcat-jdbc是默认情况下提供的,这一点尤其重要。


springboot连接多个mongdb_bc_02

其他连接池始终可以手动配置。如果您定义了您自己的DataSourcebean,则不会发生自动配置。


数据源配置由外部配置属性控制 spring.datasource.*。例如,您可以在以下部分声明以下部分 application.properties

spring.datasource.url = jdbc:mysql:// localhost / test
 spring.datasource.username = dbuser
 spring.datasource.password =
 dbpass spring.datasource.driver-class-name = com.mysql.jdbc.Driver


springboot连接多个mongdb_spring

您至少应该通过设置spring.datasource.url 属性来指定URL 。否则,Spring Boot将尝试自动配置嵌入式数据库。


springboot连接多个mongdb_bc_02

你通常不需要指定driver-class-name,因为Spring Boot可以从大多数数据库中推导出它url


springboot连接多个mongdb_spring

为了DataSource创建池,我们需要能够验证一个有效的 Driver类是否可用,因此我们在做任何事之前检查它。换句话说,如果你设置了spring.datasource.driver-class-name=com.mysql.jdbc.Driver,那么这个类必须是可加载的。


查看 DataSourceProperties 更多支持的选项。无论实际实施情况如何,这些都是标准选项。也可以微调实现特定的设置,使用各自的前缀(spring.datasource.hikari.*, spring.datasource.tomcat.*,和spring.datasource.dbcp2.*)。请参阅您正在使用的连接池实现的文档以获取更多详细信息。

例如,如果您使用 Tomcat连接池,则可以自定义许多其他设置,如以下示例中所示:

#如果没有连接可用,则在抛出异常之前等待的毫秒数。
spring.datasource.tomcat.max-wait = 10000

#可以同时从该池中分配的最大活动连接数。
spring.datasource.tomcat.max-active = 50

#在从池中借用它之前验证连接。
spring.datasource.tomcat.test-on-borrow = true