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 vonspring-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.
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()
vonAppConfigurationRefresh
gibt einMono
-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.Aktualisieren von
bootstrap.properties
zum Aktivieren der Aktualisierungspring.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
Ö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.
Wählen Sie Übernehmen.
Erstellen Sie Ihre Spring Boot-Anwendung mit Maven, und führen Sie sie aus.
mvn clean package mvn spring-boot:run
Ö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/
Ö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 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 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>
Aktualisieren von
bootstrap.properties
zum Aktivieren der Aktualisierungspring.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
Ö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.
Wählen Sie Übernehmen.
Erstellen Sie Ihre Spring Boot-Anwendung mit Maven, und führen Sie sie aus.
mvn clean package mvn spring-boot:run
Ö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/
Ö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 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 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.