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

Luk*_*uke 8 connection tomcat default pool spring-boot

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

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

spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
Run Code Online (Sandbox Code Playgroud)

我的pom.xml有这些与DB事物相关的依赖:

spring-boot-jpa
spring-boot-jdbc
jdbc7
Run Code Online (Sandbox Code Playgroud)

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

Luk*_*uke 12

我找到了解决方案.这可以通过以下方式修改在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>
Run Code Online (Sandbox Code Playgroud)

然而,hikari问题可能是默认的小型连接池.所以这个问题也可以通过这个改变来解决,但我自己没有验证.请注意其他人.像这样的东西:

spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=5
Run Code Online (Sandbox Code Playgroud)


KJE*_*a48 5

从 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'
}
Run Code Online (Sandbox Code Playgroud)

之后,您可以配置您喜欢使用的其他池化技术,如下所示。在您的 application.yml 文件中:

spring:
   datasource:
     type: org.apache.tomcat.jdbc.pool.DataSource
Run Code Online (Sandbox Code Playgroud)

依赖:

implementation('org.apache.tomcat:tomcat-jdbc')
Run Code Online (Sandbox Code Playgroud)