首页 > 解决方案 > 如何在 Spring Boot 2.0 上将默认 hikari cp 替换为 tomcat 池

问题描述

我已将 Spring Boot 应用程序迁移到 2.0,并发现 hikari 连接池存在一些问题。当我获取数据库数据时,这会导致 hikari cp timeout 即。连接不可用。我不知道为什么在以前的版本中它可以正常工作。

因此,我尝试在此配置中使用 tomcat 池,application.yml但它不起作用(以正确的 YAML 格式)。

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

我的 pom.xml 有这些与数据库相关的依赖项:

spring-boot-jpa
spring-boot-jdbc
jdbc7

如何排除hikari并使用tomcat连接池?

标签: spring-boottomcatconnectiondefaultpool

解决方案


我已经找到了解决方案。这可以通过如下修改在 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

推荐阅读