Configuración de un grupo de conexiones Hikari con Spring Boot

1. Información general

Hikari es una implementación de JDBC DataSource que proporciona un mecanismo de agrupación de conexiones.

En comparación con otras implementaciones, promete ser liviano y de mejor rendimiento. Para obtener una introducción a Hikari, consulte este artículo.

Este tutorial rápido muestra cómo podemos configurar una aplicación Spring Boot 2 o Spring Boot 1 para usar Hikari DataSource .

2. Configuración de Hikari con Spring Boot 2.x

En Spring Boot 2, Hikari es la implementación predeterminada de DataSource.

Esto es lo que ha cambiado desde Spring Boot 1.x:

  • la dependencia de Hikari ahora se incluye automáticamente en spring-boot-starter-data-jpa y spring-boot-starter-jdbc
  • el algoritmo de descubrimiento que determina automáticamente una implementación de DataSource ahora prefiere Hikari sobre TomcatJDBC (consulte el manual de referencia).

Por tanto, no tenemos nada que hacer si queremos usar Hikari en una aplicación basada en Spring Boot 2.x.

3. Ajuste de los parámetros de configuración de Hikari

Una de las ventajas de Hikari sobre otras implementaciones de DataSource es el hecho de que ofrece muchos parámetros de configuración.

Podemos especificar los valores para estos parámetros usando el prefijo spring.datasource.hikari y agregando el nombre del parámetro Hikari:

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

Una lista de todos los parámetros de Hikari con una buena explicación está disponible en el sitio de Hikari Github, así como en los documentos de Spring.

4. Configuración de Hikari con Spring Boot 1.x

Spring Boot 1.x utiliza el grupo de conexiones Tomcat JDBC de forma predeterminada.

Tan pronto como incluyamos spring-boot-starter-data-jpa en nuestro pom.xml , incluiremos de manera transitiva una dependencia a la implementación de Tomcat JDBC. Durante el tiempo de ejecución, Spring Boot creará un Tomcat DataSource para que lo usemos.

Para configurar Spring Boot para usar el grupo de conexiones de Hikari en su lugar, tenemos dos opciones.

4.1. Dependencia de Maven

Primero, necesitamos incluir la dependencia de Hikari en nuestro pom.xml :

 com.zaxxer HikariCP 3.2.0 

La versión más actual se puede encontrar en Maven Central.

4.2. Configuración explícita

La forma más segura de decirle a Spring Boot que use Hikari es configurar la implementación de DataSource explícitamente.

Para hacer esto, simplemente establecemos la propiedad spring.datasource.type con el nombre completo de la implementación de DataSource que queremos usar:

@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. Eliminación de la dependencia de Tomcat JDBC

La segunda opción es permitir que Spring Boot encuentre la implementación de Hikari DataSource .

Si la primavera de arranque no puede encontrar el Tomcat origen de datos en la ruta de clase, buscará automáticamente para el Hikari origen de datos siguiente. El algoritmo de descubrimiento se describe en el manual de referencia.

Para eliminar el grupo de conexiones de Tomcat de la ruta de clase, podemos excluirlo en nuestro pom.xml :

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

Ahora, la prueba de la sección anterior también funcionará sin establecer la propiedad spring.datasource.type .

5. Conclusión

En este artículo, configuramos la implementación de Hikari DataSource en una aplicación Spring Boot 2.xy aprendimos cómo aprovechar la configuración automática de Spring Boot. También echamos un vistazo a los cambios necesarios para configurar Hikari cuando se usa Spring Boot 1.x.

El código para el ejemplo de Spring Boot 1.x está disponible aquí, y el código para el ejemplo de Spring Boot 2.x está disponible aquí.