Esto está medio respondido por las otras publicaciones y quería ser muy explícito. También quería ser más Spring-Boot-esque. Siéntase libre de cambiar los intervalos de tiempo según sea necesario.
Opción 1:Tira las conexiones rotas del grupo.
Usa estas propiedades:
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1;
spring.datasource.validation-interval=30000
Opción 2:Mantener vivas las conexiones en el grupo.
Usa estas propiedades:
spring.datasource.test-while-idle=true
spring.datasource.validation-query=SELECT 1;
spring.datasource.time-between-eviction-runs-millis=60000
Opción 3:Deshágase de forma proactiva de las conexiones inactivas.
Use estas propiedades (Nota:no pude encontrar documentación confiable sobre este para Spring Boot. Además, el tiempo de espera es en segundos, no en milisegundos):
spring.datasource.remove-abandoned=true
spring.datasource.remove-abandoned-timeout=60
¡Feliz arranque!