Les applications Spring Cloud utilisent Nacos pour la gestion des configurations lors du développement local. Une fois déployées sur Enterprise Distributed Application Service (EDAS), Application Configuration Management (ACM), intégré à EDAS, prend automatiquement en charge la gestion et la diffusion des configurations.
Ce tutoriel vous guide dans la création d'une application Spring Cloud avec Spring Cloud Alibaba Nacos Config :
Démarrer le serveur Nacos en local et créer une configuration
Créer une application Spring Boot qui lit les données depuis Nacos
Vérifier l'actualisation dynamique de la configuration
Déployer l'application sur EDAS
Pour ignorer les étapes de construction, téléchargez le projet de démonstration nacos-config-example.zip.
Spring Cloud Alibaba Nacos Config intègre Nacos au framework Spring Cloud et respecte la spécification d'injection de configuration de Spring Cloud.
La fonctionnalité de gestion des configurations d'EDAS n'entre pas en conflit avec Nacos open source.
Prérequis
Avant de commencer, assurez-vous que :
Maven est installé et configuré dans le PATH système
Vous avez téléchargé la dernière version de Nacos Server
Étape 1 : Démarrer le serveur Nacos
Extrayez l'archive du serveur Nacos téléchargée.
-
Accédez au répertoire
nacos/binet démarrez le serveur en mode autonome :-
Linux, UNIX ou macOS :
sh startup.sh -m standalone -
Windows :
startup.cmd -m standalone
-
Par défaut, startup.cmd se lance en mode cluster. Un double-clic direct sur le fichier sous Windows entraîne un échec du démarrage. Exécutez la commande ci-dessus ou ajoutez MODE="standalone" dans startup.cmd. Pour plus de détails, consultez le guide de démarrage rapide de Nacos.
Étape 2 : Créer une configuration locale
Ouvrez la console du serveur Nacos à l'adresse http://127.0.0.1:8848/nacos. Le nom d'utilisateur et le mot de passe par défaut sont tous deux
nacos.Dans le volet de navigation de gauche, sélectionnez ConfigManagement > Configurations.
Cliquez sur l'icône
en haut à droite pour créer une configuration.-
Sur la page Create Configuration, définissez les paramètres suivants et cliquez sur Publish :
Paramètre Valeur Data ID nacos-config-example.propertiesGroup DEFAULT_GROUPFormat PropertiesConfiguration Content test.name=nacos-config-test
Correspondance entre le Data ID et votre application
Le Data ID suit cette convention de nommage :
${prefix}-${spring.profiles.active}.${file-extension}
| Composant | Valeur par défaut | Propriété de remplacement |
|---|---|---|
prefix |
Valeur de spring.application.name |
spring.cloud.nacos.config.prefix |
spring.profiles.active |
Profil Spring actuel. Si vide, le trait d'union est omis : ${prefix}.${file-extension} |
-- |
file-extension |
properties |
spring.cloud.nacos.config.file-extension. Formats pris en charge : properties, yaml, yml |
Dans ce tutoriel, le nom de l'application est nacos-config-example sans profil actif, donc le Data ID est nacos-config-example.properties.
Étape 3 : Créer l'application Spring Boot
3a. Créer un projet Maven
Créez un projet Maven nommé nacos-config-example.
3b. Ajouter les dépendances
Ajoutez les éléments suivants dans pom.xml. Cet exemple utilise Spring Boot 2.1.4.RELEASE avec Spring Cloud Greenwich.SR1 :
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Compatibilité des versions
Faites correspondre la version de Spring Cloud Alibaba à votre ligne de release Spring Cloud :
| Ligne de release Spring Cloud | Version Spring Cloud Alibaba |
|---|---|
| Greenwich | 2.1.1.RELEASE |
| Finchley | 2.0.1.RELEASE |
| ~~Edgware~~ | ~~1.5.1.RELEASE~~ (abandonné -- ne pas utiliser) |
3c. Créer la classe de démarrage
Sous src/main/java, créez le package com.aliware.edas et ajoutez la classe NacosConfigExampleApplication suivante :
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class NacosConfigExampleApplication {
public static void main(String[] args) {
SpringApplication.run(NacosConfigExampleApplication.class, args);
}
}
3d. Créer un contrôleur
Dans le même package, créez une classe EchoController. L'annotation @RefreshScope permet l'actualisation dynamique de la configuration : lorsque test.name change dans Nacos, l'application récupère la nouvelle valeur sans redémarrage.
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class EchoController {
@Value("${test.name}")
private String userName;
@RequestMapping(value = "/")
public String echo() {
return userName;
}
}
L'annotation @RefreshScope recrée le bean lorsque Nacos pousse une modification de configuration. L'écouteur d'actualisation automatique est activé par défaut (spring.cloud.nacos.config.refresh.enabled=true).
3e. Configurer l'adresse du serveur Nacos
Sous src/main/resources, créez un fichier bootstrap.properties :
spring.application.name=nacos-config-example
server.port=18081
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
127.0.0.1:8848: adresse du serveur Nacos.18081: port de l'application.
Si le serveur Nacos s'exécute sur une autre machine, mettez à jour l'adresse et le port. Consultez la référence de configuration pour connaître les propriétés supplémentaires.
Étape 4 : Exécuter et vérifier localement
Vérifier la configuration initiale
Exécutez la méthode
maindansNacosConfigExampleApplicationpour démarrer l'application.Ouvrez http://127.0.0.1:18081 dans un navigateur. La réponse est
nacos-config-test, soit la valeur detest.nameque vous avez définie à l'étape 2.
Vérifier l'actualisation dynamique de la configuration
Dans la console du serveur Nacos, accédez à ConfigManagement > Configurations et modifiez l'entrée
nacos-config-example.properties.Remplacez
test.name=nacos-config-testpartest.name=nacos-config-updatedet cliquez sur Publish.Actualisez la page http://127.0.0.1:18081. La réponse affiche désormais
nacos-config-updated, ce qui confirme que l'annotation@RefreshScopefonctionne sans redémarrage de l'application.
Étape 5 : Déployer sur EDAS
Recréez la même configuration dans EDAS avant le déploiement, afin que l'application puisse la lire depuis le module de gestion des configurations d'EDAS.
5a. Créer la configuration dans EDAS
Connectez-vous à la console EDAS.
Dans le volet de navigation de gauche, sélectionnez Application Management > Microservice Configurations.
Sur la page Configurations, sélectionnez une Region dans la barre de navigation supérieure et un Microservices Namespace dans la liste déroulante. Cliquez ensuite sur Create Configuration.
-
Dans le panneau Create Configuration, définissez les mêmes paramètres que pour la configuration Nacos locale et cliquez sur Create :
Paramètre Valeur Data ID nacos-config-example.propertiesGroup DEFAULT_GROUPFormat PropertiesConfiguration Content test.name=nacos-config-test
Les valeurs Region et Microservice Namespace sont héritées de la page Configurations et ne peuvent pas être modifiées dans ce panneau.
5b. Déployer l'application
Déployez l'application sur EDAS. Choisissez une méthode de déploiement selon votre infrastructure :
Simplifier le développement local vers le cloud
Une fois votre application exécutée sur EDAS, vous pouvez ignorer la configuration locale du serveur Nacos pour les itérations suivantes. EDAS propose une fonctionnalité d'interconnexion local-cloud qui permet à une application exécutée localement de :
Lire les configurations directement depuis le module de gestion des configurations d'EDAS
Appeler d'autres applications déployées dans le cloud et recevoir leurs appels
Cela vous offre le comportement complet du runtime EDAS sans avoir à redéployer à chaque modification.Pour plus d'informations sur l'interconnexion local-cloud, consultez Présentation de l'interconnexion local-cloud.
Référence de configuration
Ajoutez l'une de ces propriétés dans bootstrap.properties pour personnaliser le comportement de Nacos Config :
| Élément de configuration | Clé | Valeur par défaut | Description |
|---|---|---|---|
| Adresse du serveur | spring.cloud.nacos.config.server-addr |
-- | Adresse du serveur Nacos (obligatoire) |
| Préfixe du Data ID | spring.cloud.nacos.config.prefix |
${spring.application.name} |
Partie préfixe du Data ID |
| Groupe | spring.cloud.nacos.config.group |
DEFAULT_GROUP |
Groupe de configuration |
| Suffixe et format du Data ID | spring.cloud.nacos.config.file-extension |
properties |
Format de fichier pour le contenu de la configuration. Pris en charge : properties, yaml, yml |
| Encodage | spring.cloud.nacos.config.encode |
UTF-8 |
Encodage des caractères pour le contenu de la configuration |
| Délai d'expiration | spring.cloud.nacos.config.timeout |
3000 |
Délai d'expiration pour la récupération des configurations, en millisecondes |
| Namespace | spring.cloud.nacos.config.namespace |
-- | Isoler les configurations entre environnements (développement, test, production) |
| Chemin de contexte | spring.cloud.nacos.config.context-path |
-- | Chemin relatif de l'API du serveur Nacos |
| Endpoint | spring.cloud.nacos.config.endpoint |
UTF-8 |
Endpoint spécifique à la région pour la résolution dynamique de l'adresse du serveur |
| Actualisation automatique | spring.cloud.nacos.config.refresh.enabled |
true |
Activer ou désactiver l'écouteur de changement de configuration |
Pour la liste complète des éléments de configuration, consultez la documentation Spring Cloud Alibaba Nacos Config.