
Serveur de configuration centralisé pour systèmes distribués avec API HTTP, chiffrement/déchiffrement des propriétés, et prise en charge des backends Git, Vault, JDBC et système de fichiers local.
//// NE MODIFIEZ PAS CE FICHIER. IL A ÉTÉ GÉNÉRÉ. Les modifications manuelles de ce fichier seront perdues lorsqu'il sera regénéré. Modifiez plutôt les fichiers dans le répertoire src/main/asciidoc/. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-config/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-config/branch/master"] image::https://api.codacy.com/project/badge/Grade/f064024a072c477e97dca6ed5a70fccd?branch=master["Codacy code quality", link="https://www.codacy.com/app/Spring-Cloud/spring-cloud-config?branch=master&utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-config&utm_campaign=Badge_Grade"]
Spring Cloud Config offre un support côté serveur et côté client pour la configuration externalisée dans un système distribué. Avec le serveur de configuration, vous disposez d'un endroit central pour gérer les propriétés externes des applications dans tous les environnements. Les concepts des deux côtés (client et serveur) correspondent exactement aux abstractions Environment et PropertySource de Spring, donc ils s'intègrent très bien avec les applications Spring mais peuvent être utilisés avec n'importe quelle application, quel que soit le langage. Lorsqu'une application progresse dans le pipeline de déploiement, du développement vers les tests puis la production, vous pouvez gérer la configuration entre ces environnements et être certain que les applications disposent de tout ce dont elles ont besoin pour fonctionner lors de la migration. L'implémentation par défaut du stockage backend du serveur utilise git, ce qui permet de gérer facilement des versions étiquetées des environnements de configuration, tout en étant accessible à un large éventail d'outils de gestion du contenu. Il est facile d'ajouter des implémentations alternatives et de les intégrer via la configuration Spring.
== Fonctionnalités
=== Serveur de configuration Spring Cloud Config
Spring Cloud Config Server offre les avantages suivants :
@EnableConfigServer=== Client Spring Cloud Config
Plus spécifiquement pour les applications Spring, Spring Cloud Config Client vous permet de :
Environment Spring avec des sources de propriétés distantes.@RefreshScope pour les @Beans Spring qui doivent être réinitialisés lorsque la configuration change./env pour mettre à jour l'Environment et relier à nouveau les @ConfigurationProperties et les niveaux de log.
** /refresh pour rafraîchir les beans @RefreshScope.
** /restart pour redémarrer le contexte Spring (désactivé par défaut).
** /pause et /resume pour appeler les méthodes Lifecycle (stop() et start() sur le ApplicationContext).== Démarrage rapide
Ce démarrage rapide vous guide à travers l'utilisation du serveur et du client de Spring Cloud Config Server.
Tout d'abord, démarrez le serveur comme suit :
Le serveur est une application Spring Boot, vous pouvez donc l'exécuter depuis votre IDE si vous le préférez (la classe principale est ConfigServerApplication).
Ensuite, essayez un client comme suit :
La stratégie par défaut pour localiser les sources de propriétés est de cloner un dépôt git (à spring.cloud.config.server.git.uri) et de l'utiliser pour initialiser une mini SpringApplication. L'Environment de la mini-application est utilisé pour énumérer les sources de propriétés et les publier sur un point de terminaison JSON.
Le service HTTP possède des ressources sous la forme suivante :
où application est injecté comme spring.config.name dans la SpringApplication (ce qui est normalement application dans une application Spring Boot classique), profile est un profil actif (ou une liste de propriétés séparées par des virgules), et label est une étiquette git optionnelle (par défaut master).
Spring Cloud Config Server tire la configuration pour les clients distants de diverses sources. L'exemple suivant obtient la configuration d'un dépôt git (qui doit être fourni), comme illustré dans l'exemple suivant :
D'autres sources sont toute base de données compatible JDBC, Subversion, Hashicorp Vault, Credhub et les systèmes de fichiers locaux.
=== Utilisation côté client
Pour utiliser ces fonctionnalités dans une application, vous pouvez la construire comme une application Spring Boot qui dépend de spring-cloud-config-client (pour un exemple, voir les cas de test de config-client ou l'application exemple). Le moyen le plus pratique d'ajouter la dépendance est d'utiliser un starter Spring Boot org.springframework.cloud:spring-cloud-starter-config. Il existe également un parent pom et BOM (spring-cloud-starter-parent) pour les utilisateurs Maven et un fichier de propriétés de gestion de version Spring IO pour les utilisateurs Gradle et Spring CLI. L'exemple suivant montre une configuration Maven typique :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>{spring-boot-docs-version}</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>{spring-cloud-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<!-- repositories also needed for snapshots and milestones -->
Vous pouvez maintenant créer une application Spring Boot standard, comme le serveur HTTP suivant :
@SpringBootApplication @RestController public class Application {
@RequestMapping("/")
public String home() {
return "Hello World!";
}