Spring 使用默认连接池启动

Spring Boot with default connection-pool

我正在使用 SpringBoot (v2.3.0.RELEASE)、JPA 和 Hibernate(带有 MySQL 数据库)。 总的来说,我需要尝试改进性能。

我不太清楚默认配置中是否已经存在数据库连接池。

我没有在我的 pom 中添加任何关于连接池的特定依赖项,但是当我尝试 运行 我的服务时,我读到:

2021-07-01 13:53:04.065  INFO  HikariDataSource-getConnection():110 - [ HikariPool-1 - Starting... ]
2021-07-01 13:53:04.499  INFO  HikariDataSource-getConnection():123 - [ HikariPool-1 - Start completed. ]

你能给我一些相关信息吗?

是否需要手动配置(同时添加依赖)连接池?

Hikari 是 Spring Boot 2 的默认 DataSource 实现。这意味着我们不需要在 pom.xml 中添加显式依赖。 spring-boot-starter-jdbc 和 spring-boot-starter-data-jpa 默认解析它。总而言之,您不需要 Spring Boot 2 的其他步骤。
Link 文档:Spring Documentation for Connection pools

虽然你修改了HikariCP的默认属性

spring.datasource.hikari.connection-timeout = 20000 #maximum number of milliseconds that a client will wait for a connection

spring.datasource.hikari.minimum-idle= 10 #minimum number of idle connections maintained by HikariCP in a connection pool

spring.datasource.hikari.maximum-pool-size= 10 #maximum pool size

spring.datasource.hikari.idle-timeout=10000 #maximum idle time for connection

spring.datasource.hikari.max-lifetime= 1000 # maximum lifetime in milliseconds of a connection in the pool after it is closed.

spring.datasource.hikari.auto-commit =true #default auto-commit behavior.

根据 Spring 引导文档:

支持的连接池:-

Spring Boot 使用以下算法来选择特定的实现:

  1. 我们更喜欢 HikariCP,因为它的性能和并发性。如果 HikariCP 可用,我们总是选择它。
  2. 否则,如果 Tomcat 池数据源可用,我们将使用它。
  3. 否则,如果 Commons DBCP2 可用,我们将使用它。
  4. 如果HikariCP的none、Tomcat和DBCP2可用,如果Oracle UCP可用,我们就使用它。

如果你使用 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa “starters”,你会自动得到对 HikariCP 的依赖。

Spring documentation

查看 HikariCP:https://github.com/brettwooldridge/HikariCP