Démarrage d'une application Spring Boot sans dépendance à la base de données
Lorsque vous travaillez avec des applications Spring Boot qui utilisent des bases de données, vous pouvez rencontrer des erreurs lorsque la base de données n'est pas disponible frustrant. Pour surmonter ce problème, l'application doit être configurée pour démarrer avec succès même si la base de données n'est pas accessible.
Cause de l'erreur d'origine
L'erreur rencontrée lors du premier La tentative de démarrer l'application Spring Boot sans la base de données provient d'Hibernate et de sa dépendance aux métadonnées de la base de données pour déterminer la structure et les relations des tables. Lorsque la base de données n'est pas disponible, Hibernate ne parvient pas à obtenir les métadonnées nécessaires, ce qui entraîne l'erreur.
Solution : configuration de Spring Boot et Hibernate
Pour résoudre ce problème, configurez les propriétés suivantes dans le fichier application.yml :
spring:
datasource:
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
- spring.datasource.continueOnError : Cette propriété indique à Spring de continuer à démarrer l'application même s'il y a une erreur lors de l'initialisation de la source de données.
- spring.datasource.initialize : Cette propriété spécifie s'il faut initialiser la source de données au démarrage. Le définir sur false signifie que la source de données ne sera pas initialisée tant qu'une connexion n'est pas réellement tentée.
- spring.datasource.initialSize : cette propriété définit le nombre initial de connexions à établir au démarrage. Le définir sur 0 signifie qu'aucune connexion ne sera établie au démarrage.
- spring.datasource.timeBetweenEvictionRunsMillis : cette propriété détermine la fréquence à laquelle (en millisecondes) la source de données recherchera les connexions inactives à expulser.
- spring.datasource.minEvictableIdleTimeMillis : cette propriété définit la durée minimale (en millisecondes) pendant laquelle une connexion inactive peut rester dans le pool avant d'être éligible à l'expulsion.
- spring.datasource.minIdle : cette propriété définit la nombre minimum de connexions inactives à conserver dans le pool.
- spring.jpa.hibernate.ddl-auto : cette propriété définit l'action qu'Hibernate entreprendra sur le schéma de base de données. Le définir sur none signifie qu'aucune modification ne doit être apportée au schéma de la base de données.
- spring.jpa.hibernate.dialect : cette propriété spécifie le dialecte Hibernate à utiliser. L'utilisation du dialecte approprié garantit qu'Hibernate génère du SQL compatible avec la base de données.
- spring.jpa.hibernate.properties.hibernate.temp.use_jdbc_metadata_defaults : cette propriété spécifie si Hibernate doit utiliser les métadonnées JDBC pour déterminer la structure de la table. et les relations. Le définir sur false empêche Hibernate de s'appuyer sur la base de données et utilise à la place les annotations de mappage dans les classes de domaine pour définir les entités.
Avantages de la solution
En implémentant ces configurations, l'application Spring Boot :
- Démarre avec succès même lorsque la base de données est indisponible.
- Établit des connexions à la volée lorsque la base de données devient disponible, éliminant ainsi besoin de redémarrages.
- Gère gracieusement les pannes de base de données sans affecter l'application en cours d'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn