How to replace default hikari cp to tomcat pool on spring boot 2.0

后端 未结 3 1532
时光取名叫无心
时光取名叫无心 2021-02-07 20:47

I have migrated spring boot application to 2.0 and found out some problems with hikari connection pool. When I am fetching database data this results to hikari cp timeout ie. co

相关标签:
3条回答
  • 2021-02-07 20:56

    I have found out the solution. This can be resolved in pom.xml by modifying like that:

    <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>
    

    However the hikari problem was probably with default small size of connection pool. So this problem could be resolved also with this change but not verified by myself. Just note for others. Something like that:

    spring.datasource.hikari.connection-timeout=60000
    spring.datasource.hikari.maximum-pool-size=5
    
    0 讨论(0)
  • 2021-02-07 21:12

    Since Spring Boot 2.0 release, spring-boot-starter-jdbc and spring-boot-starter-data-jpa resolve HikariCP dependency by default and spring.datasource.type property has HikariDataSource as default value.So if u have both dependency in your application you should exclude it from both like below.

    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'
    }
    

    After that you can configure other pooling technologies that u likes to use, like below . In your application.yml file :

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

    In dependency :

    implementation('org.apache.tomcat:tomcat-jdbc')
    
    0 讨论(0)
  • 2021-02-07 21:16

    Also:

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

    works with

    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jdbc</artifactId>
    </dependency>
    
    0 讨论(0)
提交回复
热议问题