SpringBootを使用したHikari接続プールの構成
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-jpaをpom.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で入手できます。