如何在 Spring Boot 2.0 上将默认 hikari cp 替换为 tomcat 池
Posted
技术标签:
【中文标题】如何在 Spring Boot 2.0 上将默认 hikari cp 替换为 tomcat 池【英文标题】:How to replace default hikari cp to tomcat pool on spring boot 2.0 【发布时间】:2018-10-14 19:58:41 【问题描述】:我已经将 Spring Boot 应用程序迁移到 2.0 并发现了 hikari 连接池的一些问题。当我获取数据库数据时,这会导致 hikari cp timeout 即。连接不可用。我不知道为什么在以前的版本中它可以正常工作。
因此,我尝试在 application.yml
中使用带有此配置的 tomcat 池,但它不起作用(以正确的 YAML 格式)。
spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
我的 pom.xml 有这些与数据库相关的依赖项:
spring-boot-jpa
spring-boot-jdbc
jdbc7
如何排除hikari并使用tomcat连接池?
【问题讨论】:
【参考方案1】:我已经找到了解决方案。 这可以通过如下修改在 pom.xml 中解决:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
然而,hikari 问题可能与默认的小连接池有关。所以这个问题也可以通过这个改变来解决,但我自己没有验证。只为别人注意。类似的东西:
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=5
【讨论】:
光仍然处于活动状态 关于池大小的增加。它仍然无法解决 Hikari 问题,我们的设置为 20 分钟和 100 Max,我们有时会收到错误,我们的生产系统崩溃了。【参考方案2】:自 Spring Boot 2.0 发布以来,spring-boot-starter-jdbc 和 spring-boot-starter-data-jpa 默认解析 HikariCP 依赖,spring.datasource.type 属性将 HikariDataSource 作为默认值。所以如果你有两个依赖在您的应用程序中,您应该将其从以下两者中排除。
implementation('org.springframework.boot:spring-boot-starter-data-jpa')
exclude group: 'com.zaxxer', module: 'HikariCP'
implementation('org.springframework.boot:spring-boot-starter-jdbc')
exclude group: 'com.zaxxer', module: 'HikariCP'
之后,您可以配置您喜欢使用的其他池化技术,如下所示 . 在您的 application.yml 文件中:
spring:
datasource:
type: org.apache.tomcat.jdbc.pool.DataSource
依赖:
implementation('org.apache.tomcat:tomcat-jdbc')
【讨论】:
【参考方案3】:还有:
spring:
datasource:
type: org.apache.tomcat.jdbc.pool.DataSource
适用于
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jdbc</artifactId>
</dependency>
【讨论】:
我在撒谎......只有排除有帮助:/以上是关于如何在 Spring Boot 2.0 上将默认 hikari cp 替换为 tomcat 池的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 2.0:Spring Boot 2.0尝鲜-动态 Banner
Spring Boot 2.0:Spring Boot 如何解决项目启动时初始化资源
Spring Boot 2.0:Spring Boot 如何解决项目启动时初始化资源
在 Spring-boot 上将 Spring Batch 与 spring-batch-admin-manager 集成时出错