Een Hikari-verbindingspool configureren met Spring Boot

1. Overzicht

Hikari is een JDBC Databron implementatie die een mechanisme voor het poolen van verbindingen biedt.

In vergelijking met andere implementaties, belooft het lichtgewicht te zijn en beter te presteren. Zie dit artikel voor een inleiding tot Hikari.

Deze korte tutorial laat zien hoe we een Spring Boot 2- of Spring Boot 1-applicatie kunnen configureren om de Hikari te gebruiken Databron.

2. Hikari configureren met Spring Boot 2.x

In Spring Boot 2 is Hikari de standaard DataSource-implementatie.

Dit is wat er is veranderd ten opzichte van Spring Boot 1.x:

  • de afhankelijkheid van Hikari wordt nu automatisch meegenomen in spring-boot-starter-data-jpa en spring-boot-starter-jdbc
  • het ontdekkingsalgoritme dat automatisch een Databron implementatie geeft nu de voorkeur aan Hikari boven TomcatJDBC (zie de referentiehandleiding).

We hebben dus niets te doen als we Hikari willen gebruiken in een applicatie gebaseerd op Spring Boot 2.x.

3. Hikari-configuratieparameters afstemmen

Een van de voordelen van Hikari ten opzichte van andere Databron implementaties is het feit dat het veel configuratieparameters biedt.

We kunnen de waarden voor deze parameters specificeren door het voorvoegsel te gebruiken spring.datasource.hikari en het toevoegen van de naam van de Hikari-parameter:

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

Een lijst met alle Hikari-parameters met een goede uitleg is beschikbaar op de Hikari Github-site, evenals in de Spring-documenten.

4. Hikari configureren met Spring Boot 1.x

Spring Boot 1.x gebruikt standaard de Tomcat JDBC-verbindingspool.

Zodra we opnemen spring-boot-starter-data-jpa in onze pom.xml, zullen we tijdelijk een afhankelijkheid van de Tomcat JDBC-implementatie opnemen. Tijdens runtime maakt Spring Boot vervolgens een Tomcat Databron voor ons om te gebruiken.

Om Spring Boot te configureren om in plaats daarvan de Hikari Connection Pool te gebruiken, hebben we twee opties.

4.1. Afhankelijkheid van Maven

Ten eerste moeten we de afhankelijkheid van Hikari opnemen in onze pom.xml:

 com.zaxxer HikariCP 3.2.0 

De meest recente versie is te vinden op Maven Central.

4.2. Expliciete configuratie

De veiligste manier om Spring Boot te vertellen Hikari te gebruiken, is door de DataSource-implementatie expliciet te configureren.

Om dit te doen, hebben we gewoon stel de eigenschap in spring.datasource.type naar de volledig gekwalificeerde naam van de Databron implementatie die we willen gebruiken:

@RunWith (SpringRunner.class) @SpringBootTest (properties = "spring.datasource.type = com.zaxxer.hikari.HikariDataSource") openbare klasse HikariIntegrationTest {@Autowired private DataSource dataSource; @Test openbare leegte hikariConnectionPoolIsConfigured () {assertEquals ("com.zaxxer.hikari.HikariDataSource", dataSource.getClass (). GetName ()); }}

4.3. De Tomcat JDBC-afhankelijkheid verwijderen

De tweede optie is om Spring Boot de Hikari te laten vinden Databron implementatie zelf.

Als Spring Boot de Tomcat Databron in het klassenpad zal het automatisch zoeken naar de Hikari Databron De volgende. Het ontdekkingsalgoritme wordt beschreven in de referentiehandleiding.

Om de Tomcat-verbindingspool uit het klassenpad te verwijderen, kunnen we deze uitsluiten in ons pom.xml:

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

Nu werkt de test uit de vorige sectie ook zonder de spring.datasource.type eigendom.

5. Conclusie

In dit artikel hebben we de Hikari geconfigureerd Databron implementatie in een Spring Boot 2.x-applicatie en leerde hoe je de autoconfiguratie van Spring Boot kunt gebruiken. We hebben ook gekeken naar de wijzigingen die nodig zijn om Hikari te configureren bij het gebruik van Spring Boot 1.x.

De code voor het Spring Boot 1.x-voorbeeld is hier beschikbaar en de code voor het Spring Boot 2.x-voorbeeld is hier beschikbaar.


$config[zx-auto] not found$config[zx-overlay] not found