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 envers spring-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 automatisée de spring-cloud-azure-appconfiguration-config-web ne déclenche aucune 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.

App Configuration expose AppConfigurationRefresh, qui peut être utilisé pour vérifier si le cache a expiré et, si tel est le cas, une actualisation est déclenchée.

  1. Mettez à jour HelloController pour utiliser AppConfigurationRefresh.

    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 un Mono 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.

  2. Mettre à 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
    
  3. 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.

  4. Sélectionnez Appliquer.

  5. Générez votre application Spring Boot avec Maven, puis exécutez-la.

    mvn clean package
    mvn spring-boot:run
    
  6. Ouvrez une fenêtre de navigateur, puis accédez à l’URL : http://localhost:8080. Le message associé à votre clé s’affiche.

    Vous pouvez également utiliser curl pour tester votre application, par exemple :

    curl -X GET http://localhost:8080/
    
  7. 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
  8. 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
  9. 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 à l’issue de l’intervalle d’actualisation, si cette durée n’est pas écoulée, alors aucune modification n’est visible, vous devez donc attendre que l’intervalle s’écoule, puis déclencher la vérification de l’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>
  1. Mettre à 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
    
  2. 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.

  3. Sélectionnez Appliquer.

  4. Générez votre application Spring Boot avec Maven, puis exécutez-la.

    mvn clean package
    mvn spring-boot:run
    
  5. Ouvrez une fenêtre de navigateur, puis accédez à l’URL : http://localhost:8080. Le message associé à votre clé s’affiche.

    Vous pouvez également utiliser curl pour tester votre application, par exemple :

    curl -X GET http://localhost:8080/
    
  6. 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
  7. 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
  8. 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é, elle ne recherche pas les modifications. Vous devez donc attendre que l’intervalle s’écoule avant de déclencher la vérification de l’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.