Configuration d'un pool de connexions Hikari avec Spring Boot

1. Vue d'ensemble

Hikari est une implémentation JDBC DataSource qui fournit un mécanisme de regroupement de connexions.

Comparé à d'autres implémentations, il promet d'être léger et plus performant. Pour une introduction à Hikari, consultez cet article.

Ce tutoriel rapide montre comment nous pouvons configurer une application Spring Boot 2 ou Spring Boot 1 pour utiliser Hikari DataSource .

2. Configuration de Hikari avec Spring Boot 2.x

Dans Spring Boot 2, Hikari est l'implémentation DataSource par défaut.

Voici ce qui a changé depuis Spring Boot 1.x:

  • la dépendance à Hikari est maintenant automatiquement incluse dans spring-boot-starter-data-jpa et spring-boot-starter-jdbc
  • l'algorithme de découverte qui détermine automatiquement une implémentation DataSource préfère désormais Hikari à TomcatJDBC (voir le manuel de référence).

Ainsi, nous n'avons rien à faire si nous voulons utiliser Hikari dans une application basée sur Spring Boot 2.x.

3. Réglage des paramètres de configuration Hikari

L'un des avantages de Hikari par rapport aux autres implémentations de DataSource est le fait qu'il offre de nombreux paramètres de configuration.

Nous pouvons spécifier les valeurs de ces paramètres en utilisant le préfixe spring.datasource.hikari et en ajoutant le nom du paramètre Hikari:

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

Une liste de tous les paramètres Hikari avec une bonne explication est disponible sur le site Hikari Github, ainsi que dans la documentation Spring.

4. Configuration de Hikari avec Spring Boot 1.x

Spring Boot 1.x utilise le pool de connexions Tomcat JDBC par défaut.

Dès que nous incluons spring-boot-starter-data-jpa dans notre pom.xml , nous inclurons transitivement une dépendance à l'implémentation Tomcat JDBC. Pendant l'exécution, Spring Boot créera ensuite une source de données Tomcat que nous utiliserons.

Pour configurer Spring Boot afin d'utiliser à la place le pool de connexions Hikari, nous avons deux options.

4.1. Dépendance de Maven

Tout d'abord, nous devons inclure la dépendance sur Hikari dans notre pom.xml :

 com.zaxxer HikariCP 3.2.0 

La version la plus récente est disponible sur Maven Central.

4.2. Configuration explicite

Le moyen le plus sûr de dire à Spring Boot d'utiliser Hikari est de configurer explicitement l'implémentation DataSource.

Pour ce faire, nous définissons simplement la propriété spring.datasource.type sur le nom complet de l' implémentation DataSource que nous voulons utiliser:

@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. Suppression de la dépendance Tomcat JDBC

La deuxième option consiste à laisser Spring Boot trouver l' implémentation Hikari DataSource elle-même.

Si Spring Boot ne trouve pas la source de données Tomcat dans le chemin de classe, il recherchera automatiquement la source de données Hikari ensuite. L'algorithme de découverte est décrit dans le manuel de référence.

Pour supprimer le pool de connexions Tomcat du chemin de classe, nous pouvons l'exclure dans notre pom.xml :

 org.springframework.boot spring-boot-starter-data-jpa   org.apache.tomcat tomcat-jdbc   

Désormais, le test de la section précédente fonctionnera également sans définir la propriété spring.datasource.type .

5. Conclusion

Dans cet article, nous avons configuré l' implémentation Hikari DataSource dans une application Spring Boot 2.x et appris à tirer parti de la configuration automatique de Spring Boot. Nous avons également examiné les modifications requises pour configurer Hikari lors de l'utilisation de Spring Boot 1.x.

Le code de l'exemple Spring Boot 1.x est disponible ici, et le code de l'exemple Spring Boot 2.x est disponible ici.