Hola, tenemos la solución a tu pregunta, has scroll y la encontrarás un poco más abajo.
Solución:
Puede configurar:
spring.datasource.continue-on-error=true
en su aplicación.propiedades.
Según la guía del usuario de Spring Boot 2.2.4:
De forma predeterminada, Spring Boot habilita la función de falla rápida del inicializador Spring JDBC. Esto significa que, si los scripts provocan excepciones, la aplicación no se inicia. Puede ajustar ese comportamiento configurando spring.datasource.continue-on-error.
Pude resolver esto. Sin embargo, una diferencia principal entre lo que hice funcionar y el código de la pregunta es que estoy usando Hikari en lugar de Tomcat para el conjunto de conexiones.
Estos fueron los key ajustes que tuve que hacer:
spring.datasource.hikari.minimum-idle: 0
spring.datasource.hikari.initialization-fail-timeout: -1
spring.datasource.continue-on-error: true
spring.datasource.driver-class-name: org.postgresql.Driver
spring.jpa.database-platform: org.hibernate.dialect.PostgreSQLDialect
Ajuste minimum-idle
a 0 le permite a Hikari ser feliz sin ninguna conexión.
los initialization-fail-timeout
la configuración de -1 le dice a Hikari que no quiero que se conecte cuando el grupo se enciende.
De la documentación de HikariCP:
Un valor inferior a cero omitirá cualquier intento de conexión inicial y el grupo se iniciará inmediatamente mientras intenta obtener conexiones en segundo plano. En consecuencia, los esfuerzos posteriores para obtener una conexión pueden fallar.
los continue-on-error
ajuste true
permite que el servicio continúe incluso cuando se produce un error.
Ambos driver-class-name
y database-platform
fueron requeridos. De lo contrario, Hikari intenta averiguar esos valores conectándose a la base de datos (durante el inicio).
Sin embargo, en caso de que me esté perdiendo algo, aquí está mi configuración completa de Spring:
spring:
application:
name:
datasource:
url:
username:
password:
driver-class-name: org.postgresql.Driver
hikari:
minimum-idle: 0
maximum-pool-size: 15
connection-timeout: 10000 #10s
idle-timeout: 300000 #5m
max-lifetime: 600000 #10m
initialization-fail-timeout: -1
validation-timeout: 1000 #1s
continue-on-error: true
jpa:
open-in-view: false
database-platform: org.hibernate.dialect.PostgreSQLDialect
Y mi proyecto tiene las siguientes dependencias de Spring Boot:
org.springframework.boot:spring-boot
org.springframework.boot:spring-boot-actuator
org.springframework.boot:spring-boot-actuator-autoconfigure
org.springframework.boot:spring-boot-autoconfigure
org.springframework.boot:spring-boot-configuration-processor
org.springframework.boot:spring-boot-devtools
org.springframework.boot:spring-boot-starter
org.springframework.boot:spring-boot-starter-actuator
org.springframework.boot:spring-boot-starter-jdbc
org.springframework.boot:spring-boot-starter-jooq
org.springframework.boot:spring-boot-starter-json
org.springframework.boot:spring-boot-starter-logging
org.springframework.boot:spring-boot-starter-security
org.springframework.boot:spring-boot-starter-test
org.springframework.boot:spring-boot-starter-tomcat
org.springframework.boot:spring-boot-starter-validation
org.springframework.boot:spring-boot-starter-web
Necesitas agregar
spring.jpa.database-platform=org.hibernate.dialect.MySQL5Dialect
para que funcione