Tutorial: Verwenden der dynamischen Konfiguration in einer Java Spring-App

App Configuration verfügt über zwei Bibliotheken für Spring.

  • spring-cloud-azure-appconfiguration-config erfordert Spring Boot und ist abhängig von spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-web erfordert Spring Web zusammen mit Spring Boot und fügt außerdem Unterstützung für die automatische Überprüfung der Konfigurationsaktualisierung hinzu.

Beide Bibliotheken unterstützen die manuelle Auslösung, um nach aktualisierten Konfigurationswerten zu suchen.

Mithilfe der Funktion Aktualisieren können Sie Ihre Konfigurationswerte aktualisieren, ohne Ihre Anwendung neu starten zu müssen, allerdings werden dabei alle Beans in @RefreshScope neu erstellt. Sie überprüft auf jegliche Änderungen an konfigurierten Triggern, einschließlich Metadaten. Standardmäßig ist das Aktualisierungsintervall, also die Mindestzeit zwischen Überprüfungen auf Änderungen, auf 30 Sekunden festgelegt.

Die automatisierte Aktualisierung von spring-cloud-azure-appconfiguration-config-web wird basierend auf der Aktivität (insbesondere ServletRequestHandledEvent von Spring Web) ausgelöst. Wird ServletRequestHandledEvent nicht ausgelöst, löst die automatische Aktualisierung von spring-cloud-azure-appconfiguration-config-web keine Aktualisierung aus, selbst wenn die Cache-Ablaufzeit verstrichen ist.

Verwenden der manuellen Aktualisierung

Wenn Sie die manuelle Aktualisierung verwenden möchten, beginnen Sie mit einer Spring Boot-App, die App Configuration nutzt. Dies kann beispielsweise die App sein, die Sie durch Ausführen der Anleitung unter Schnellstart: Erstellen einer Java Spring-App mit Azure App Configuration erstellen.

App Configuration stellt AppConfigurationRefresh zur Verfügung, mit dessen Hilfe geprüft werden kann, ob der Cache abgelaufen ist. Ist dies der Fall, wird eine Aktualisierung ausgelöst.

  1. Aktualisieren Sie HelloController, um AppConfigurationRefresh zu verwenden.

    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();
        }
    }
    

    refreshConfigurations() von AppConfigurationRefresh gibt ein Mono-Element zurück. Dieses ist „true“, wenn eine Aktualisierung ausgelöst wurde, und „false“, wenn keine Aktualisierung ausgelöst wurde. „false“ bedeutet, dass die Ablaufzeit des Caches nicht verstrichen ist, keine Änderung vorgenommen wurde oder ein anderer Thread zurzeit auf eine Aktualisierung prüft.

  2. Aktualisieren von bootstrap.properties zum Aktivieren der Aktualisierung

    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. Öffnen Sie das Azure-Portal, und navigieren Sie zu der App Configuration-Ressource, die Ihrer Anwendung zugeordnet ist. Wählen Sie Konfigurations-Explorer unter Vorgänge aus, und erstellen Sie durch Auswählen von + Erstellen>Schlüssel-Wert ein neues Schlüssel-Wert-Paar, um die folgenden Parameter hinzuzufügen:

    Schlüssel Wert
    sentinel 1

    Lassen Sie Bezeichnung und Inhaltstyp vorerst leer.

  4. Wählen Sie Übernehmen.

  5. Erstellen Sie Ihre Spring Boot-Anwendung mit Maven, und führen Sie sie aus.

    mvn clean package
    mvn spring-boot:run
    
  6. Öffnen Sie ein neues Browserfenster, und navigieren Sie zur URL http://localhost:8080. Die Nachricht für Ihren Schlüssel wird angezeigt.

    Sie können auch curl zum Testen Ihrer Anwendung verwenden. Beispiel:

    curl -X GET http://localhost:8080/
    
  7. Öffnen Sie zum Testen der dynamischen Konfiguration das Azure App Configuration-Portal, das Ihrer Anwendung zugeordnet ist. Wählen Sie den Konfigurations-Explorer aus, und aktualisieren Sie den Wert des angezeigten Schlüssels. Beispiel:

    Schlüssel Wert
    /application/config.message Hello - Updated
  8. Aktualisieren Sie den zuvor erstellten Sentinel-Schlüssel auf einen neuen Wert. Durch diese Änderung wird die Anwendung veranlasst, alle Konfigurationsschlüssel zu aktualisieren, sobald das Aktualisierungsintervall abgelaufen ist.

    Schlüssel Wert
    sentinel 2
  9. Aktualisieren Sie die Browserseite zweimal, damit die neue Nachricht angezeigt wird. Beim ersten Mal wird die Aktualisierung ausgelöst, beim zweiten Mal werden die Änderungen geladen.

Hinweis

Die Bibliothek sucht erst nach Ablauf des Aktualisierungsintervalls nach Änderungen. Ist der Zeitraum noch nicht abgelaufen, wird keine Änderung erkannt, und Sie müssen bis zum Ablauf des Zeitraums warten und dann die Aktualisierungsüberprüfung auslösen.

Verwenden der automatisierten Aktualisierung

Wenn Sie die automatisierte Aktualisierung verwenden möchten, beginnen Sie mit einer Spring Boot-App, die App Configuration nutzt. Dies kann beispielsweise die App sein, die Sie durch Ausführen der Anleitung unter Schnellstart: Erstellen einer Java Spring-App mit Azure App Configuration erstellen.

Öffnen Sie dann die Datei pom.xml in einem Text-Editor, und fügen Sie unter Verwendung des folgenden Codes eine <dependency> für spring-cloud-azure-appconfiguration-config-web hinzu.

Spring Boot

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>5.8.0</version>
</dependency>
  1. Aktualisieren von bootstrap.properties zum Aktivieren der Aktualisierung

    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. Öffnen Sie das Azure-Portal, und navigieren Sie zu der App Configuration-Ressource, die Ihrer Anwendung zugeordnet ist. Wählen Sie Konfigurations-Explorer unter Vorgänge aus, und erstellen Sie durch Auswählen von + Erstellen>Schlüssel-Wert ein neues Schlüssel-Wert-Paar, um die folgenden Parameter hinzuzufügen:

    Schlüssel Wert
    sentinel 1

    Lassen Sie Bezeichnung und Inhaltstyp vorerst leer.

  3. Wählen Sie Übernehmen.

  4. Erstellen Sie Ihre Spring Boot-Anwendung mit Maven, und führen Sie sie aus.

    mvn clean package
    mvn spring-boot:run
    
  5. Öffnen Sie ein neues Browserfenster, und navigieren Sie zur URL http://localhost:8080. Die Nachricht für Ihren Schlüssel wird angezeigt.

    Sie können auch curl zum Testen Ihrer Anwendung verwenden. Beispiel:

    curl -X GET http://localhost:8080/
    
  6. Öffnen Sie zum Testen der dynamischen Konfiguration das Azure App Configuration-Portal, das Ihrer Anwendung zugeordnet ist. Wählen Sie den Konfigurations-Explorer aus, und aktualisieren Sie den Wert des angezeigten Schlüssels. Beispiel:

    Schlüssel Wert
    /application/config.message Hello - Updated
  7. Aktualisieren Sie den zuvor erstellten Sentinel-Schlüssel auf einen neuen Wert. Durch diese Änderung wird die Anwendung veranlasst, alle Konfigurationsschlüssel zu aktualisieren, sobald das Aktualisierungsintervall abgelaufen ist.

    Schlüssel Wert
    sentinel 2
  8. Aktualisieren Sie die Browserseite zweimal, damit die neue Nachricht angezeigt wird. Beim ersten Mal wird die Aktualisierung ausgelöst, beim zweiten Mal werden die Änderungen geladen, wenn die erste Anforderung unter Verwendung des ursprünglichen Bereichs zurückkehrt.

Hinweis

Die Bibliothek sucht erst nach Ablauf des Aktualisierungsintervalls nach Änderungen. Ist das Aktualisierungsintervall noch nicht abgelaufen, wird nicht nach Änderungen gesucht, und Sie müssen bis zum Ablauf des Intervalls warten und dann die Aktualisierungsüberprüfung auslösen.

Nächste Schritte

In diesem Tutorial haben Sie Ihre Spring Boot-App aktiviert, um Konfigurationseinstellungen dynamisch aus App Configuration zu aktualisieren. Weitere Fragen finden Sie in der Referenzdokumentation. Sie enthält alle Details zur Funktionsweise der Spring Cloud Azure App Configuration-Bibliothek. Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie eine von Azure verwaltete Identität hinzufügen, um den Zugriff auf App Configuration zu optimieren.