A maneira mais fácil é especificar o
autoReconnect
no URL JDBC, embora essa não seja a abordagem recomendada. spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true
Isso pode causar problemas quando você tem uma conexão ativa e durante uma transação algo acontece e uma reconexão acontecerá. Não dará problemas quando a conexão for validada no início da transação e uma nova conexão for adquirida no início.
No entanto, provavelmente é melhor habilitar a validação de suas conexões durante a vida útil do seu aplicativo. Para isso, você pode especificar várias propriedades .
Primeiro, comece especificando o número máximo de conexões permitidas para o pool. (Para uma leitura sobre como determinar o tamanho máximo do pool, leia este ).
spring.datasource.max-active=10
Você também pode querer especificar o número de conexões iniciais
spring.datasource.initial-size=5
Em seguida, você deseja especificar o número mínimo e máximo de conexões inativas.
spring.datasource.max-idle=5
spring.datasource.min-idle=1
Para validar a conexão, você precisa especificar uma consulta de validação e quando validar. Como você deseja validar periodicamente, em vez de quando uma conexão é recuperada do pool (isso para evitar conexões quebradas em seu pool).
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1
OBSERVAÇÃO: O uso de uma
validation-query
é realmente desencorajado, pois o JDBC4 tem uma maneira melhor/diferente de fazer a validação da conexão. O HikariCP chamará automaticamente o método de validação JDBC quando disponível. Agora que você também está validando enquanto uma conexão está inativa, você precisa especificar com que frequência deseja executar essa consulta para as conexões e quando uma conexão é considerada inativa.
spring.datasource.time-between-eviction-runs-millis=5000 (this is the default)
spring.datasource.min-evictable-idle-time-millis=60000 (this is also default)
Tudo isso deve acionar a validação de suas conexões (ociosas) e quando ocorrer uma exceção ou o período ocioso tiver passado, suas conexões serão removidas do pool.
Supondo que você esteja usando o Tomcat JDBC como o pool de conexões isto é uma boa leitura do que e como configurar.
ATUALIZAÇÃO: O Spring Boot 2.x mudou o pool de conexão padrão para HikariCP em vez de Tomcat JDBC.