Saltar al contenido

Spring-Boot: ¿Cómo configuro las propiedades del grupo JDBC como el número máximo de conexiones?

Solución:

Resulta que establecer estas propiedades de configuración es bastante sencillo, pero la documentación oficial es más general, por lo que puede ser difícil de encontrar cuando se busca específicamente información de configuración del grupo de conexiones.

Para establecer el tamaño máximo de grupo para tomcat-jdbc, establezca esta propiedad en su archivo .properties o .yml:

spring.datasource.maxActive=5

También puede utilizar lo siguiente si lo prefiere:

spring.datasource.max-active=5

Puede establecer cualquier propiedad de grupo de conexiones que desee de esta manera. Aquí hay una lista completa de propiedades respaldadas por tomcat-jdbc.

Para comprender cómo funciona esto de manera más general, debe profundizar un poco en el código Spring-Boot.

Spring-Boot construye el DataSource de esta manera (vea aquí, línea 102):

@ConfigurationProperties(prefix = DataSourceAutoConfiguration.CONFIGURATION_PREFIX)
@Bean
public DataSource dataSource() {
    DataSourceBuilder factory = DataSourceBuilder
            .create(this.properties.getClassLoader())
            .driverClassName(this.properties.getDriverClassName())
            .url(this.properties.getUrl())
            .username(this.properties.getUsername())
            .password(this.properties.getPassword());
    return factory.build();
}

El DataSourceBuilder es responsable de averiguar qué biblioteca de agrupación usar, verificando cada una de una serie de clases conocidas en la ruta de clases. Luego construye el DataSource y lo devuelve al dataSource() función.

En este punto, la magia comienza a usar @ConfigurationProperties. Esta anotación le dice a Spring que busque propiedades con prefijo CONFIGURATION_PREFIX (cual es spring.datasource). Para cada propiedad que comience con ese prefijo, Spring intentará llamar al establecedor en el DataSource con esa propiedad.

Tomcat DataSource es una extensión de DataSourceProxy, que tiene el método setMaxActive().

Y así es como tu spring.datasource.maxActive=5 se aplica correctamente!

¿Qué pasa con otros grupos de conexiones?

No lo he intentado, pero si está utilizando uno de los otros grupos de conexiones compatibles con Spring-Boot (actualmente HikariCP o Commons DBCP), debería poder configurar las propiedades de la misma manera, pero deberá mirar el proyecto documentación para saber qué hay disponible.

En la versión actual de Spring-Boot (1.4.1.RELEASE), cada implementación de fuente de datos de agrupación tiene su propio prefijo para las propiedades.

Por ejemplo, si está utilizando tomcat-jdbc:

spring.datasource.tomcat.max-wait=10000

Puedes encontrar la explicación aquí

spring.datasource.max-wait=10000

esto ya no tiene ningún efecto.

En Spring Boot 2.x, debe hacer referencia a las propiedades específicas del proveedor.

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connect-to-production-database

El valor predeterminado, hikari se puede configurar con spring.datasource.hikari.maximum-pool-size.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *