Configuration d’un pool de connexions Hikari avec amorçage printanier

Configuration d'un pool de connexions Hikari avec un démarrage initial

1. Vue d'ensemble

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

Comparé à d'autres implémentations, il promet d'être léger etbetter performing. Pour une introduction à Hikari, voirthis article.

Ce tutoriel rapide montre comment configurer une application Spring Boot 1 ou Spring Boot 2 pour utiliser les HikariDataSource.

Lectures complémentaires:

Relation un à un dans JPA

Apprenez trois façons différentes de maintenir une relation personnalisée avec JPA.

Read more

Botte de printemps avec Hibernate

Une introduction rapide et pratique à l'intégration de Spring Boot et Hibernate / JPA.

Read more

2. Configurer Hikari avec Spring Boot 1.x

Spring Boot 1.x utilise lesTomcat JDBC Connection Pool par défaut.

Dès que nous incluonsspring-boot-starter-data-jpa dans nospom.xml, nous inclurons transitivement une dépendance à l'implémentation JDBC Tomcat. Pendant l'exécution, Spring Boot créera ensuite un TomcatDataSource que nous utiliserons.

Pour configurer Spring Boot afin qu'il utilise le pool de connexions Hikari à la place, nous vous proposons deux options.

2.1. Dépendance Maven

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


    com.zaxxer
    HikariCP
    3.2.0

La version la plus récente peut être trouvée surMaven Central.

2.2. Configuration explicite

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

Pour ce faire, nous avons simplementset 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. Suppression de la dépendance Tomcat JDBC

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

If Spring Boot cannot find the Tomcat DataSource in the classpath, it will automatically look for the Hikari DataSource next. L'algorithme de découverte est décrit dans lesreference manual.

Pour supprimer le pool de connexions Tomcat du chemin de classe, nous pouvons l'exclure dans nospom.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.

3. Configurer 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 désormais automatiquement incluse dansspring-boot-starter-data-jpa

  • l'algorithme de découverte qui détermine automatiquement une implémentation deDataSource préfère désormais Hikari à TomcatJDBC (voir lesreference manual).

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

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

L’un des avantages d’Hikari par rapport aux autres implémentations deDataSourceest 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éfixespring.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 lesHikari Github Site.

5. Conclusion

Dans cet article, nous avons configuré l'implémentation de HikariDataSourcedans une application Spring Boot 1.x et appris à tirer parti de la configuration automatique de Spring Boot 2.x.

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