如何在spring boot 2.0上将默认的hikari cp替换为tomcat池

时间:2018-05-04 10:45:09

标签: spring-boot tomcat connection default pool

我已将spring boot应用程序迁移到2.0,并发现了hikari连接池的一些问题。当我获取数据库数据时,这导致hikari cp超时ie。连接不可用。我不知道为什么在之前版本中这种方法正常工作。

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

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

我的pom.xml具有与数据库事物相关的这些依赖关系:

spring-boot-jpa
spring-boot-jdbc
jdbc7

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

也:

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

使用

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jdbc</artifactId>
</dependency>

答案 2 :(得分:0)

自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')