Tutoriel : Utiliser la configuration dynamique dans une application Java Spring
App Configuration comporte deux bibliothèques pour Spring.
spring-cloud-azure-appconfiguration-config
nécessite Spring Boot et prend une dépendance enversspring-cloud-context
.spring-cloud-azure-appconfiguration-config-web
nécessite Spring Web avec Spring Boot et ajoute aussi la prise en charge de la vérification automatique de l’actualisation de la configuration.
Les deux bibliothèques prennent en charge le déclenchement manuel pour vérifier les valeurs de configuration actualisées.
L’actualisation vous permet de mettre à jour vos valeurs de configuration sans avoir à redémarrer votre application, même si cela entraîne la recréation de tous les objets (beans) dans @RefreshScope
. Elle permet de rechercher d’éventuelles modifications apportées aux déclencheurs configurés, y compris aux métadonnées. Par défaut, la durée minimale entre les vérifications des modifications, appelée intervalle d’actualisation, est définie à 30 secondes.
L’actualisation automatisée de spring-cloud-azure-appconfiguration-config-web
est déclenchée en fonction de l’activité, notamment celle de ServletRequestHandledEvent
Spring Web. Si un ServletRequestHandledEvent
n'est pas déclenché, l'actualisation automatique de spring-cloud-azure-appconfiguration-config-web
ne déclenche pas d'actualisation même si le délai d'expiration du cache a expiré.
Utiliser l’actualisation manuelle
Pour utiliser l’actualisation manuelle, démarrez par une application Spring Boot qui utilise App Configuration, telle que l’application que vous pouvez créer en suivant le guide de démarrage rapide Spring Boot pour App Configuration.
La configuration de l'application expose AppConfigurationRefresh
, qui peut être utilisé pour vérifier si le cache a expiré. si elle est expirée, une actualisation est déclenchée.
Pour utiliser
AppConfigurationRefresh
, mettez à jour HelloController.import com.azure.spring.cloud.config.AppConfigurationRefresh; @RestController public class HelloController { private final MessageProperties properties; @Autowired(required = false) private AppConfigurationRefresh refresh; public HelloController(MessageProperties properties) { this.properties = properties; } @GetMapping public String getMessage() throws InterruptedException, ExecutionException { if (refresh != null) { refresh.refreshConfigurations(); } return "Message: " + properties.getMessage(); } }
La méthode
refreshConfigurations()
d’AppConfigurationRefresh
retourne unMono
qui a la valeur true si une actualisation a été déclenchée, et false dans le cas contraire. False signifie que l’heure d’expiration du cache n’a pas expiré, qu’il n’y a eu aucune modification ou qu’un autre thread est en train de vérifier l’existence d’une actualisation.Mise à jour
bootstrap.properties
pour activer l’actualisation :spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
Ouvrez le portail Azure et accédez à la ressource App Configuration associée à votre application. Sélectionnez Explorateur de configurations sous Opérations et créez une nouvelle paire clé-valeur en sélectionnant + Créer>Clé-valeur pour ajouter les paramètres suivants :
Clé Valeur sentinel 1 Laissez Étiquette et Type de contenu vides pour l’instant.
Sélectionnez Appliquer.
Générez votre application Spring Boot avec Maven, puis exécutez-la.
mvn clean package mvn spring-boot:run
Ouvrez une fenêtre de navigateur, puis accédez à l’URL :
http://localhost:8080
. Vous voyez le message associé à votre clé.Vous pouvez également utiliser curl pour tester votre application, par exemple :
curl -X GET http://localhost:8080/
Pour tester la configuration dynamique, ouvrez le portail Azure App Configuration associé à votre application. Sélectionnez l’Explorateur de configurations, et mettez à jour la valeur de votre clé affichée, par exemple :
Clé Valeur /application/config.message Hello – Mis à jour Mettez à jour la clé Sentinel que vous avez créée précédemment avec une nouvelle valeur. Ce changement déclenche l’application pour actualiser toutes les clés de configuration à la fin de l’intervalle d’actualisation.
Clé Valeur sentinel 2 Actualisez la page du navigateur deux fois pour afficher le nouveau message. La première fois déclenche l’actualisation, la seconde charge les modifications.
Remarque
La bibliothèque vérifie uniquement les modifications apportées après l'expiration de l'intervalle d'actualisation. Si la période n'est pas écoulée, aucun changement n'est affiché. Attendez que la période soit écoulée, puis déclenchez la vérification d’actualisation.
Utiliser l’actualisation automatisée
Pour utiliser l’actualisation automatisée, démarrez par une application Spring Boot qui utilise App Configuration, telle que l’application que vous pouvez créer en suivant le guide de démarrage rapide Spring Boot pour App Configuration.
Ensuite, ouvrez le fichier pom.xml dans un éditeur de texte, puis ajoutez une <dependency>
pour spring-cloud-azure-appconfiguration-config-web
à l’aide du code suivant.
Spring Boot
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
<version>5.8.0</version>
</dependency>
Mettre à jour
bootstrap.properties
pour activer l’actualisationspring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
Ouvrez le portail Azure et accédez à la ressource App Configuration associée à votre application. Sélectionnez Explorateur de configurations sous Opérations et créez une nouvelle paire clé-valeur en sélectionnant + Créer>Clé-valeur pour ajouter les paramètres suivants :
Clé Valeur sentinel 1 Laissez Étiquette et Type de contenu vides pour l’instant.
Sélectionnez Appliquer.
Générez votre application Spring Boot avec Maven, puis exécutez-la.
mvn clean package mvn spring-boot:run
Ouvrez une fenêtre de navigateur, puis accédez à l’URL :
http://localhost:8080
. Vous voyez maintenant le message associé à votre clé.Vous pouvez également utiliser curl pour tester votre application, par exemple :
curl -X GET http://localhost:8080/
Pour tester la configuration dynamique, ouvrez le portail Azure App Configuration associé à votre application. Sélectionnez l’Explorateur de configurations, et mettez à jour la valeur de votre clé affichée, par exemple :
Clé Valeur /application/config.message Hello – Mis à jour Mettez à jour la clé Sentinel que vous avez créée précédemment avec une nouvelle valeur. Ce changement déclenche l’application pour actualiser toutes les clés de configuration à la fin de l’intervalle d’actualisation.
Clé Valeur sentinel 2 Actualisez la page du navigateur deux fois pour afficher le nouveau message. La première fois déclenche l’actualisation, la seconde charge les modifications, puisque la première requête est retournée en utilisant l’étendue d’origine.
Remarque
La bibliothèque vérifie uniquement les modifications apportées une fois l’intervalle d’actualisation écoulé. Si l'intervalle d'actualisation n'est pas écoulé, il ne vérifie pas les modifications. Attendez que l’intervalle soit écoulé, puis déclenchez la vérification d’actualisation.
Étapes suivantes
Dans ce tutoriel, vous avez permis à votre application Spring Boot d’actualiser dynamiquement les paramètres de configuration à partir d’App Configuration. Pour trouver les réponses à d’autres questions, consultez la documentation de référence qui contient tous les détails sur le fonctionnement de la bibliothèque Spring Cloud Azure App Configuration. Pour savoir comment utiliser une identité managée Azure afin de simplifier l’accès à App Configuration, passez au tutoriel suivant.