This is kind of half-answered by the other posts and I wanted to be very explicit. Also I wanted to be more Spring-Boot-esque. Feel free to change the time intervals as necessary.
Option 1: Toss out broken connections from the pool.
Use these properties:
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1;
spring.datasource.validation-interval=30000
Option 2: Keep connections in the pool alive.
Use these properties:
spring.datasource.test-while-idle=true
spring.datasource.validation-query=SELECT 1;
spring.datasource.time-between-eviction-runs-millis=60000
Option 3: Proactively toss out idle connections.
Use these properties (Note: I was not able to find reliable documentation on this one for Spring Boot. Also the timeout is in seconds not milliseconds):
spring.datasource.remove-abandoned=true
spring.datasource.remove-abandoned-timeout=60
Happy booting!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…