1. ホーム
  2. java

[解決済み] Spring Bootアプリのapplication.propertiesファイルにHikariCPを設定するにはどうしたらいいですか?

2022-11-02 22:58:57

質問

Spring Boot (1.2.0.M1) アプリに HikariCP をセットアップして、Tomcat DBCP の代わりに使用するテストを行おうとしています。Tomcat で行っていたように、application.properties ファイルで接続プールを構成したいのですが、それをどのように行うべきかがわかりません。私が見つけたすべての例は、JavaConfigスタイルか、別のHikariCPプロパティ・ファイルを使用することを示しています。どなたか、application.propertiesで設定するためのプロパティ名を教えていただけませんか?また、driverClassName方式からDataSourceClassName方式に変更したいのですが、その方が見た目もきれいで推奨されているからです。これは、私のapplication.propertiesファイル(複数可)でも可能でしょうか?

以下は、私が Tomcat DBCP 用に用意したものです (いくつかの基本的な設定だけで、完全にフラッシュアウトされているわけではありません)。

spring.datasource.validation-query=SELECT 1
spring.datasource.max-active=10
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=5
spring.datasource.test-on-borrow=true
spring.datasource.test-on-return=true

そして、現在はdriverClassNameとjdbc urlで接続の設定をしています。

spring.datasource.url=jdbc:mysql://localhost:3306/myDb
spring.datasource.driverClassName=com.mysql.jdbc.Driver

どのように解決するのですか?

@Configuration
@ConfigurationProperties(prefix = "params.datasource")
public class JpaConfig extends HikariConfig {

    @Bean
    public DataSource dataSource() throws SQLException {
        return new HikariDataSource(this);
    }

}

application.yml

params:
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    jdbcUrl: jdbc:mysql://localhost:3306/myDb
    username: login
    password: password
    maximumPoolSize: 5


UPDATED! Spring Boot 1.3.0 以降のバージョン :

  1. 依存関係にHikariCPを追加するだけ
  2. application.ymlを設定する

application.yml

spring:
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    url: jdbc:h2:mem:TEST
    driver-class-name: org.h2.Driver
    username: username
    password: password
    hikari:
      idle-timeout: 10000


UPDATED! Spring Boot 2.0.0 以降のバージョン :

デフォルトのコネクションプールがTomcatからHikariに変更されました :)