Dans le blog précédent, nous avons placé les fichiers de configuration dans nos services respectifs, mais il y a un inconvénient à le faire. Une fois la configuration modifiée, nous devons arrêter puis modifier les fichiers de configuration avant de se rendre en ligne. S'il y a peu de services, il est compréhensible de le faire. Cependant, s'il existe des centaines de services, la gestion de la configuration distribuée est nécessaire pour le moment. Et Spring Cloud Config est créé pour résoudre ce problème. Ce qui suit est une combinaison de Gitlab pour implémenter la construction d'un centre de configuration distribué. Le centre de configuration de Cloud Spring est constitué de l'extrémité du serveur et de la fin du client.
Préalable: créez un nouveau fichier de configuration configServer-dev.properties sous le projet dans GitLab
1. Configurer le serveur
1. Ajouter des dépendances
<dependency> <proupId> org.springframework.cloud </proupId> <ArtifactId> Spring-Cloud-Config-Server </retifactid> </Dependency>
2. Activer la prise en charge de la classe principale de l'application
@Enableconfigserver
3. Configurer le fichier application.yml
Server: Port: 8888 Spring: Application: Nom: config Cloud: config: Server: git: uri: https://gitlab.xxx.com/xxxxx/xxxx.git # Configurez l'adresse du référentiel GitLab. Notez que la recherche-paths: / config-repo # L'adresse relative sous l'adresse du référentiel GitLab peut être configurée avec plusieurs, l'utilisation et la division. Nom d'utilisateur: votre nom d'utilisateur # Gitlab Repository Compte Mot Mot de passe: votre mot de passe # Mot de passe du référentiel GitLab
Remarque: Si le fichier de configuration est placé dans le répertoire racine du référentiel GIT, il n'est pas nécessaire d'utiliser le paramètre de recherche. Le fichier de configuration de cet exemple se trouve dans le répertoire de configin-repo, alors utilisez le paramètre RecherchPaths pour inviter le serveur de configuration à rechercher le sous-répertoire Config-Repo.
4. Démarrez le serveur et entrez http: // localhost: 8888 / configServer / dev / maître dans le navigateur
{"name": "configServer", "Profils": ["Dev"], "Label": "Master", "Version": "073CDA9CE85A3EED00E406F4EBCC4651EE4D9B19", "State": Null, "PropertySources": [{"Name": "https://gitlab.xxx.com/xxxxx/project/config-repo/configserver.properties", "source": {"name": "chhliuxyh", "Bonjour": "Je suis le roi du monde !!!", "Profil": "Profil-Default"}}]]} !!!Vous pouvez voir que le côté serveur peut déjà lire le fichier de configuration de GitLab. Vous pouvez accéder aux ressources sur GitLab dans le formulaire ci-dessous
/ {application} / {Profil} [/ {label}] /{application }-{profile esséePar exemple, entrez: http: // localhost: 8888 / configServer-dev.yml dans le navigateur, et le résultat est le suivant:
Bonjour: Je suis le roi du monde !!! Nom: Chhliuxyh Profil: Profile-Default
2. Configurez le client
1. Ajouter des dépendances POM
<dependency> <proupId> org.springframework.cloud </proupId> <ArtifActid> Spring-Cloud-Starter-Config </retifactid> </Dependency> <Dedency> <ProupId> org.springFramework.boot </prouprid> <ptetifactid> printemps-boot-starter-web </ artifactive>
2. Configurez le fichier bootstrap.yml
Remarque: Le fichier de configuration ici doit être placé dans le fichier bootstrap.properties ou bootstrap.yml, car la configuration de la configuration précédera l'application.properties, et le chargement de bootstrap.properties est également précédent par application.properties.
Server: Port: 8889 Spring: Application: Nom: Configserver # Il doit être cohérent avec le préfixe du fichier de configuration. Par exemple, notre nom de fichier de configuration ici est Configserver-Dev.Properties, nous devons donc le configurer en tant que Cloud Cloud: Config: URI: http: // localhost: 8888 / // Configurez le profil URL du serveur de configuration de Spring: Dev # Spécifier le profil Label: Master # Spécifiez la branche du référentiel Gitlab
3. Vérifiez le client
Ajouter un nouveau contrôleur au client
package com.chhliu.springcloud.config; import org.springframework.beans.factory.annotation.value; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.cloud.context.config.annotation.refreshscope; import org.springframework.web.bind.annotation.getMapping; import org.springframework.web.bind.annotation.restController; @SpringBootApplication @RestController @RefreshScope // Annotation @RefreshScope indique que le client de configuration rafraîchit également la valeur de la propriété injectée lorsque la configuration du serveur modifie la classe publique SpringCloudConfigClientApplication {SpringCloudConfigCigClientApplication.class. } @Value ("$ {Hello}") // Lisez les propriétés du fichier de configuration GitLab. Si nous lisons la valeur, cela signifie que le client est un profil de chaîne privé OK; @GetMapping ("/ Hello") String public hello () {return this.profile; }}Visitez dans le navigateur: http: // localhost: 8889 / bonjour, le résultat est le suivant:
Je suis le roi du monde !!!
Cela signifie que le client peut déjà obtenir la valeur du serveur.
3. Rafraîchissement dynamique
Mettre à jour les configurations gérées de configuration du cloud Spring sans redémarrer le client
1. Mettez à jour la valeur de la propriété correspondant à Hello dans le fichier de configuration de configServer-dev.properties dans le référentiel GitLab
2. Visitez http: // localhost: 8888 / configServer / Dev / Master et constatez que le contenu côté serveur a été mis à jour
3. Envoyez une demande de poste au client conf. Visitez http: // localhost: 8889 / bonjour à nouveau, on peut voir que la valeur d'attribut de lecture a été mise à jour dynamiquement sans redémarrer le service client.
PS: Pour obtenir un rafraîchissement dynamique, vous devez ajouter le démarreur suivant au fichier POM
<dependency> <proupId> org.springframework.boot </rombasid> <ArtefactId> printemp-boot-starter-actuator </retifactid> </pedidency>
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.