Konfigurieren eines Hikari-Verbindungspools mit Spring Boot

1. Übersicht

Hikari ist eine JDBC DataSource- Implementierung, die einen Verbindungspooling-Mechanismus bereitstellt.

Im Vergleich zu anderen Implementierungen verspricht es ein geringes Gewicht und eine bessere Leistung. Eine Einführung in Hikari finden Sie in diesem Artikel.

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

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

In Spring Boot 2 ist Hikari die Standardimplementierung von DataSource.

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

  • Die Abhängigkeit von Hikari ist jetzt automatisch in Spring-Boot-Starter-Daten-JPA und Spring-Boot-Starter-JDBC enthalten
  • Der Erkennungsalgorithmus , der automatisch eine DataSource- Implementierung ermittelt, bevorzugt jetzt Hikari gegenüber TomcatJDBC (siehe Referenzhandbuch).

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

3. Optimieren der Hikari-Konfigurationsparameter

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

Wir können die Werte für diese Parameter angeben, indem wir das Präfix spring.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 finden Sie auf der Hikari Github-Site sowie in den Spring-Dokumenten.

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

Spring Boot 1.x verwendet standardmäßig den Tomcat JDBC-Verbindungspool.

Sobald wir Spring-Boot-Starter-Data-JPA in unsere pom.xml aufnehmen , werden wir transitiv eine Abhängigkeit von der Tomcat JDBC-Implementierung aufnehmen. Zur Laufzeit erstellt Spring Boot dann eine Tomcat DataSource, die wir verwenden können.

Um Spring Boot so zu konfigurieren, dass stattdessen der Hikari-Verbindungspool verwendet wird, haben wir zwei Möglichkeiten.

4.1. Maven-Abhängigkeit

Zuerst müssen wir die Abhängigkeit von Hikari in unsere pom.xml aufnehmen :

 com.zaxxer HikariCP 3.2.0 

Die aktuellste Version finden Sie auf Maven Central.

4.2. Explizite Konfiguration

Der sicherste Weg, Spring Boot anzuweisen, Hikari zu verwenden, besteht darin, die DataSource-Implementierung explizit zu konfigurieren.

Dazu setzen wir einfach die Eigenschaft spring.datasource.type auf den vollständig qualifizierten Namen der DataSource- Implementierung, die wir verwenden möchten:

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

Die zweite Möglichkeit besteht darin, Spring Boot die Hikari DataSource- Implementierung selbst finden zu lassen .

Wenn Spring Boot die Tomcat DataSource im Klassenpfad nicht finden kann, sucht es automatisch nach der nächsten Hikari DataSource . Der Erkennungsalgorithmus ist im Referenzhandbuch beschrieben.

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

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

Der Test aus dem vorherigen Abschnitt funktioniert jetzt auch ohne Festlegen der Eigenschaft spring.datasource.type .

5. Schlussfolgerung

In diesem Artikel haben wir die Hikari DataSource- Implementierung in einer Spring Boot 2.x-Anwendung konfiguriert und gelernt, wie Sie die automatische Konfiguration von Spring Boot nutzen können. Wir haben uns auch die Änderungen angesehen, die zum Konfigurieren von Hikari bei Verwendung von Spring Boot 1.x erforderlich sind.

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