Partager via


Tutoriel : Utiliser une 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 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.

App Configuration expose AppConfigurationRefresh, qui vérifie si l’intervalle d’actualisation est écoulé. Si l’intervalle d’actualisation est passé, il déclenche une actualisation.

  1. Pour utiliser AppConfigurationRefresh, mettez à jour HelloController.

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.azure.spring.cloud.appconfiguration.config.AppConfigurationRefresh;
    
    @RestController
    public class HelloController {
    
        @Autowired
        private final AppConfigurationRefresh appConfigurationRefresh;
    
        @Autowired
        private final MyProperties properties;
    
        @GetMapping
        public String hello() {
            // Manually refresh configuration from Azure App Configuration
            appConfigurationRefresh.refreshConfigurations().block();
            // Read the property value from @ConfigurationProperties bean
            return "Message: " + properties.getMessage();
        }
    }
    

    La méthode AppConfigurationRefresh d’refreshConfigurations() retourne un Mono qui a la valeur true si une actualisation est 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.

    Remarque

    Pour les bibliothèques telles que Spring WebFlux qui nécessitent des appels non bloquants, refreshConfigurations() doivent être encapsulées dans un thread, car les configurations de chargement nécessitent un appel bloquant.

    new Thread(() -> refresh.refreshConfigurations()).start();
    
  2. Pour activer l’actualisation, mettez à jour application.properties :

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    
  3. Générez votre application Spring Boot avec Maven, puis exécutez-la.

    mvn clean package
    mvn spring-boot:run
    
  4. 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/
    
  5. 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
  6. 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 les modifications uniquement après la fin de l’intervalle d’actualisation. Si l’intervalle d’actualisation n’a pas passé, il ne vérifie pas les modifications. Attendez que l’intervalle soit écoulé, 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.

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>7.1.0</version>
</dependency>
  1. Pour activer l’actualisation, mettez à jour application.properties :

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    
  2. Générez votre application Spring Boot avec Maven, puis exécutez-la.

    mvn clean package
    mvn spring-boot:run
    
  3. 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/
    
  4. 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
  5. 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 les modifications uniquement après la fin de l’intervalle d’actualisation. Si l’intervalle d’actualisation n’a pas passé, 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 plus d’informations, consultez la documentation reference, il 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 pour simplifier l’accès à App Configuration, passez au tutoriel suivant.