Configurazione di un pool di connessioni Hikari con Spring Boot

1. Panoramica

Hikari è un'implementazione JDBC DataSource che fornisce un meccanismo di pool di connessioni.

Rispetto ad altre implementazioni, promette di essere leggero e con prestazioni migliori. Per un'introduzione a Hikari, vedere questo articolo.

Questo breve tutorial mostra come configurare un'applicazione Spring Boot 2 o Spring Boot 1 per utilizzare Hikari DataSource .

2. Configurazione di Hikari con Spring Boot 2.x

In Spring Boot 2, Hikari è l'implementazione predefinita di DataSource.

Questo è ciò che è cambiato da Spring Boot 1.x:

  • la dipendenza da Hikari è ora automaticamente inclusa in spring-boot-starter-data-jpa e spring-boot-starter-jdbc
  • l'algoritmo di discovery che determina automaticamente un'implementazione DataSource ora preferisce Hikari a TomcatJDBC (vedere il manuale di riferimento).

Pertanto, non abbiamo nulla da fare se vogliamo utilizzare Hikari in un'applicazione basata su Spring Boot 2.x.

3. Regolazione dei parametri di configurazione di Hikari

Uno dei vantaggi di Hikari rispetto ad altre implementazioni di DataSource è il fatto che offre molti parametri di configurazione.

Possiamo specificare i valori per questi parametri utilizzando il prefisso spring.datasource.hikari e aggiungendo il nome del parametro Hikari:

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

Un elenco di tutti i parametri di Hikari con una buona spiegazione è disponibile sul sito Hikari Github, così come nei documenti di primavera.

4. Configurazione di Hikari con Spring Boot 1.x

Spring Boot 1.x utilizza il pool di connessioni JDBC Tomcat per impostazione predefinita.

Non appena includiamo spring-boot-starter-data-jpa nel nostro pom.xml , includeremo in modo transitorio una dipendenza dall'implementazione JDBC di Tomcat. Durante il runtime, Spring Boot creerà quindi un DataSource Tomcat da utilizzare.

Per configurare Spring Boot in modo che utilizzi invece il pool di connessioni Hikari, abbiamo due opzioni.

4.1. Dipendenza da Maven

Innanzitutto, dobbiamo includere la dipendenza da Hikari nel nostro pom.xml :

 com.zaxxer HikariCP 3.2.0 

La versione più recente può essere trovata su Maven Central.

4.2. Configurazione esplicita

Il modo più sicuro per dire a Spring Boot di usare Hikari è configurare esplicitamente l'implementazione di DataSource.

Per fare ciò, impostiamo semplicemente la proprietà spring.datasource.type sul nome completo dell'implementazione DataSource che vogliamo utilizzare:

@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. Rimozione della dipendenza JDBC Tomcat

La seconda opzione è lasciare che Spring Boot trovi l' implementazione di Hikari DataSource stessa.

Se Spring Boot non riesce a trovare Tomcat DataSource nel classpath, cercherà automaticamente Hikari DataSource successivo. L'algoritmo di rilevamento è descritto nel manuale di riferimento.

Per rimuovere il Tomcat Connection Pool dal classpath possiamo escluderlo nel nostro pom.xml :

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

Ora, il test della sezione precedente funzionerà anche senza impostare la proprietà spring.datasource.type .

5. conclusione

In questo articolo, abbiamo configurato l' implementazione di Hikari DataSource in un'applicazione Spring Boot 2.x e abbiamo imparato come sfruttare l'autoconfigurazione di Spring Boot. Abbiamo anche esaminato le modifiche necessarie per configurare Hikari quando si utilizza Spring Boot 1.x.

Il codice per l'esempio Spring Boot 1.x è disponibile qui e il codice per l'esempio Spring Boot 2.x è disponibile qui.