web-dev-qa-db-ja.com

Spring Boot 2.0でデフォルトのHikari CPをTomcatプールに置き換える方法

スプリングブートアプリケーションを2.0に移行しましたが、hikari接続プールに問題があることがわかりました。私がデータベースデータをフェッチしているとき、これは光cpタイムアウト、つまり接続できません。以前のバージョンでこれが正しく機能した理由がわかりません。

したがって、application.ymlでこの構成を使用してTomcatプールを使用しようとしましたが、機能しませんでした(正しいYAML形式で)。

spring.datasource.type=org.Apache.Tomcat.jdbc.pool.DataSource

私のpom.xmlには、DBの事柄に関連する次の依存関係があります。

spring-boot-jpa
spring-boot-jdbc
jdbc7

Hikariを除外してTomcat接続プールを使用する方法

10
Luke

私は解決策を見つけました。これは、次のように変更することで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>

しかし、ひかりの問題はおそらくデフォルトの小さいサイズの接続プールにありました。したがって、この問題はこの変更でも解決できますが、自分で確認することはできません。他の人のために注意してください。そんな感じ:

spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.maximum-pool-size=5
13
Luke

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')
2
KJEjava48

また:

spring:
    datasource:
        type: org.Apache.Tomcat.jdbc.pool.DataSource

で動作します

<dependency>
    <groupId>org.Apache.Tomcat</groupId>
    <artifactId>Tomcat-jdbc</artifactId>
</dependency>
0
matzeihnsein