Maison >base de données >tutoriel mysql >Comment démarrer une application Spring Boot sans dépendance à la base de données ?

Comment démarrer une application Spring Boot sans dépendance à la base de données ?

DDD
DDDoriginal
2024-11-08 09:04:01918parcourir

How to Start a Spring Boot Application Without Database Dependency?

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