Spring BootでのHikari接続プールの構成
1. 概要
Hikariは、接続プールメカニズムを提供するJDBCDataSourceの実装です。
他の実装と比較して、軽量でbetter performingであることが約束されています。 ひかりの紹介については、this articleを参照してください。
このクイックチュートリアルでは、HikariDataSourceを使用するようにSpring Boot1またはSpringBoot2アプリケーションを構成する方法を示します。
参考文献:
2. Spring Boot1.xを使用したHikariの構成
Spring Boot 1.xは、デフォルトでTomcat JDBC Connection Poolを使用します。
spring-boot-starter-data-jpaをpom.xmlに含めるとすぐに、TomcatJDBC実装への依存関係を推移的に含めます。 実行時に、Spring BootはTomcatDataSourceを作成して使用します。
代わりに光接続プールを使用するようにSpring Bootを構成するには、2つのオプションがあります。
2.1. メーベン依存
まず、pom.xmlにHikariへの依存関係を含める必要があります。
com.zaxxer
HikariCP
3.2.0
最新バージョンはMaven Centralにあります。
2.2. 明示的な構成
Spring BootにHikariを使用するよう指示する最も安全な方法は、DataSource実装を明示的に構成することです。
これを行うには、単にset the property spring.datasource.type to the fully-qualified name of the DataSource implementation we want to use:
@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());
}
}
2.3. TomcatJDBC依存関係の削除
2番目のオプションは、Spring BootにHikariDataSourceの実装自体を検出させることです。
If Spring Boot cannot find the Tomcat DataSource in the classpath, it will automatically look for the Hikari DataSource next.検出アルゴリズムはreference manualで説明されています。
クラスパスからTomcat接続プールを削除するには、pom.xmlで除外します。
org.springframework.boot
spring-boot-starter-data-jpa
org.apache.tomcat
tomcat-jdbc
これで、前のセクションのテストは、spring.datasource.typeプロパティを設定しなくても機能します。
3. Spring Boot2.xを使用したHikariの構成
Spring Boot 2では、HikariがデフォルトのDataSource実装です。
これは、Spring Boot1.xからの変更点です。
-
Hikariへの依存関係がspring-boot-starter-data-jpaに自動的に含まれるようになりました
-
DataSourceの実装を自動的に決定する検出アルゴリズムは、TomcatJDBCよりもHikariを優先するようになりました(reference manualを参照)。
したがって、Spring Boot 2.xに基づくアプリケーションで光を使用する場合は、何の関係もありません。
4. Hikari構成パラメーターの調整
他のDataSourceの実装に対するHikariの利点の1つは、多くの構成パラメーターを提供するという事実です。
これらのパラメータの値は、プレフィックスspring.datasource.hikariを使用し、Hikariパラメータの名前を追加することで指定できます。
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=1800000
...
Hikari Github Siteには、すべてのHikariパラメーターと適切な説明のリストがあります。