Es war in der Tat eine harte Nuss zu knacken.
Nach viel, viel Recherche und tatsächlichem Debuggen von Spring-Boot, Spring, Hibernate, Tomcat-Pool usw., um es fertig zu bekommen.
Ich denke, dass es den Leuten, die versuchen, diese Art von Anforderung zu erfüllen, viel Zeit sparen wird.
Nachfolgend sind die erforderlichen Einstellungen aufgeführt, um die folgende Anforderung zu erfüllen
- Spring Boot-Apps starten problemlos, auch wenn die DB ausgefallen ist oder keine DB vorhanden ist.
- Apps nehmen die Verbindungen spontan auf, wenn DB hochfährt, was bedeutet, dass der Webserver nicht neu gestartet oder die Apps erneut bereitgestellt werden müssen.
- Es ist nicht erforderlich, den Tomcat zu starten oder die Apps neu bereitzustellen, wenn DB aus dem Ausführungszustand herunterfährt und wieder hochfährt.
application.yml :
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/schema
username: root
password: root
continueOnError: true
initialize: false
initialSize: 0
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 5000
minIdle: 0
jpa:
show-sql: true
hibernate:
ddl-auto: none
naming_strategy: org.hibernate.cfg.DefaultNamingStrategy
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
hbm2ddl:
auto: none
temp:
use_jdbc_metadata_defaults: false