Konfigurieren eines Hikari-Verbindungspools mit Spring Boot

Konfigurieren eines Hikari-Verbindungspools mit Spring Boot

1. Überblick

Hikari ist eine Implementierung von JDBCDataSource, die einen Verbindungspooling-Mechanismus bereitstellt.

Im Vergleich zu anderen Implementierungen verspricht es Leichtgewicht undbetter performing. Eine Einführung in Hikari finden Sie unterthis article.

Dieses kurze Tutorial zeigt, wie wir eine Spring Boot 1- oder Spring Boot 2-Anwendung für die Verwendung der HikariDataSourcekonfigurieren können.

Weitere Lektüre:

Eins-zu-eins-Beziehung in JPA

Erfahren Sie drei verschiedene Möglichkeiten, um eine Eins-zu-Eins-Beziehung zu JPA aufrechtzuerhalten.

Read more

Spring Boot mit Ruhezustand

Eine schnelle und praktische Einführung in die Integration von Spring Boot und Hibernate / JPA.

Read more

2. Konfigurieren von Hikari mit Spring Boot 1.x.

Spring Boot 1.x verwendet standardmäßigTomcat JDBC Connection Pool.

Sobald wirspring-boot-starter-data-jpa in unserepom.xml aufnehmen, werden wir transitiv eine Abhängigkeit von der Tomcat JDBC-Implementierung aufnehmen. Zur Laufzeit erstellt Spring Boot dann einen TomcatDataSource, den wir verwenden können.

Um Spring Boot so zu konfigurieren, dass stattdessen der Hikari-Verbindungspool verwendet wird, stehen zwei Optionen zur Verfügung.

2.1. Maven-Abhängigkeit

Zunächst müssen wir die Abhängigkeit von Hikari in unserepom.xml aufnehmen:


    com.zaxxer
    HikariCP
    3.2.0

Die aktuellste Version finden Sie unterMaven Central.

2.2. Explizite Konfiguration

Die sicherste Methode, Spring Boot die Verwendung von Hikari mitzuteilen, besteht darin, die DataSource-Implementierung explizit zu konfigurieren.

Dazu geben wir einfachset the property spring.datasource.type to the fully-qualified name of the DataSource implementation we want to use: ein

@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. Entfernen der Tomcat JDBC-Abhängigkeit

Die zweite Möglichkeit besteht darin, Spring Boot die Implementierung von HikariDataSourceelbst finden zu lassen.

If Spring Boot cannot find the Tomcat DataSource in the classpath, it will automatically look for the Hikari DataSource next. Der Erkennungsalgorithmus wird inreference manual beschrieben.

Um den Tomcat-Verbindungspool aus dem Klassenpfad zu entfernen, können Sie ihn in unserenpom.xml ausschließen:


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

Jetzt funktioniert der Test aus dem vorherigen Abschnitt auch ohne Festlegen der Eigenschaftspring.datasource.type.

3. Konfigurieren von Hikari mit Spring Boot 2.x.

In Spring Boot 2 ist Hikari die Standard-DataSource-Implementierung.

Dies hat sich gegenüber Spring Boot 1.x geändert:

  • Die Abhängigkeit von Hikari wird jetzt automatisch inspring-boot-starter-data-jpa eingeschlossen

  • Der Erkennungsalgorithmus, der automatisch die Implementierung vonDataSourceermittelt, bevorzugt jetzt Hikari gegenüber TomcatJDBC (siehereference manual).

Daher haben wir nichts zu tun, wenn wir Hikari in einer auf Spring Boot 2.x basierenden Anwendung verwenden möchten.

4. Optimieren der Hikari-Konfigurationsparameter

Einer der Vorteile von Hikari gegenüber anderenDataSource-Implementierungen ist die Tatsache, dass es viele Konfigurationsparameter bietet.

Wir können die Werte für diese Parameter angeben, indem wir das Präfixspring.datasource.hikari verwenden und den Namen des Hikari-Parameters anhängen:

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

Eine Liste aller Hikari-Parameter mit einer guten Erklärung ist aufHikari Github Site verfügbar.

5. Fazit

In diesem Artikel haben wir die Implementierung von HikariDataSourcein einer Spring Boot 1.x-Anwendung konfiguriert und gelernt, wie Sie die automatische Konfiguration von Spring Boot 2.x nutzen können.

Der Code für das Spring Boot 1.x-Beispiel isthere verfügbar, und der Code für das Spring Boot 2.x-Beispiel isthere verfügbar.