Isso é meio que respondido pelos outros posts e eu queria ser bem explícito. Também eu queria ser mais Spring-Boot-esque. Sinta-se à vontade para alterar os intervalos de tempo conforme necessário.
Opção 1:Jogue fora as conexões quebradas do pool.
Use estas propriedades:
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1;
spring.datasource.validation-interval=30000
Opção 2:manter as conexões no pool ativas.
Use estas propriedades:
spring.datasource.test-while-idle=true
spring.datasource.validation-query=SELECT 1;
spring.datasource.time-between-eviction-runs-millis=60000
Opção 3:Elimine proativamente as conexões inativas.
Use essas propriedades (Observação:não consegui encontrar documentação confiável sobre este para o Spring Boot. Além disso, o tempo limite é em segundos, não em milissegundos):
spring.datasource.remove-abandoned=true
spring.datasource.remove-abandoned-timeout=60
Boa arrancada!