1. 概要

Hikari は、接続プールメカニズムを提供するJDBC DataSource実装です。

他の実装と比較して、軽量でより優れたパフォーマンスを約束します。 ひかりの紹介は【X35X】こちらの記事【X51X】をご覧ください。

このクイックチュートリアルでは、Hikari DataSourceを使用するようにSpringBoot2またはSpringBoot1アプリケーションを構成する方法を示します。

2. SpringBoot2.xを使用したHikariの構成

Spring Boot 2では、HikariがデフォルトのDataSource実装です。

ただし、最新バージョンを使用するには、pom.xmlにHikari依存関係を明示的に追加する必要があります。

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>4.0.3</version>
</dependency>

これはSpring Boot1.xからの変更点です。

  • Hikariへの依存関係は、spring-boot-starter-data-jpaおよびspring-boot-starter-jdbcに自動的に含まれるようになりました。
  • DataSource の実装を自動的に決定する検出アルゴリズムは、TomcatJDBCよりもHikariを優先するようになりました(リファレンスマニュアルを参照)。

したがって、Spring Boot 2.xに基づくアプリケーションでHikariを使用する場合は、最新バージョンを使用する場合を除いて、何の関係もありません。

3. Hikari構成パラメーターの調整

他のDataSource実装に対するHikariの利点の1つは、多くの構成パラメーターを提供するという事実です。

これらのパラメーターの値は、プレフィックス spring.datasource.hikari を使用し、Hikariパラメーターの名前を追加することで指定できます。

spring.datasource.hikari.connectionTimeout=30000 
spring.datasource.hikari.idleTimeout=600000 
spring.datasource.hikari.maxLifetime=1800000 
...

HikariGitHubサイトおよびSpringdocs で、すべてのHikariパラメーターと適切な説明のリストを入手できます。

4. SpringBoot1.xを使用したHikariの構成

Spring Boot 1.xは、デフォルトでTomcatJDBC接続プールを使用します。

spring-boot-starter-data-jpapom.xmlに含めるとすぐに、TomcatJDBC実装への依存関係が推移的に含まれます。 実行時に、SpringBootはTomcatDataSourceを作成して使用します。

代わりにHikari接続プールを使用するようにSpringBootを構成するには、2つのオプションがあります。

4.1. Mavenの依存関係

まず、pom.xmlにHikariへの依存関係を含める必要があります。

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>4.0.3</version>
</dependency>

最新バージョンは、 MavenCentralにあります。

4.2. 明示的な構成

Spring BootにHikariを使用するように指示する最も安全な方法は、DataSource実装を明示的に構成することです。

これを行うには、プロパティspring.datasource.typeを使用するDataSource実装の完全修飾名に設定するだけです

@RunWith(SpringRunner.class)
@SpringBootTest(
    properties = "spring.datasource.type=com.zaxxer.hikari.HikariDataSource"
)
public class HikariIntegrationTest {

    @Autowired
    private DataSource dataSource;

    @Test
    public void hikariConnectionPoolIsConfigured() {
        assertEquals("com.zaxxer.hikari.HikariDataSource", dataSource.getClass().getName());
    }
}

4.3. TomcatJDBC依存関係の削除

2番目のオプションは、SpringBootにHikariDataSource実装自体を検出させることです。

SpringBootがクラスパスでTomcatDataSourceを見つけられない場合、次にHikariDataSourceを自動的に検索します。検出アルゴリズムはリファレンスマニュアルで説明されています。

クラスパスからTomcat接続プールを削除するには、pom.xmlで除外します。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
         </exclusion>
     </exclusions>
</dependency>

これで、前のセクションのテストは、spring.datasource.typeプロパティを設定しなくても機能します。

5. 結論

この記事では、SpringBoot2.xアプリケーションでHikariDataSourceの実装を構成しました。 そして、Spring Bootの自動構成を活用する方法を学びました。

また、SpringBoot1.xを使用するときにHikariを構成するために必要な変更についても確認しました。

SpringBoot1.xの例のコードはhereで入手でき、SpringBoot2.xの例のコードはhereで入手できます。