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.
In App Configuration wird das AppConfigurationRefresh
-Element verfügbar gemacht. Damit kann überprüft werden, ob der Cache abgelaufen ist. Wenn er abgelaufen ist, 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.Zum Aktivieren der Aktualisierung
bootstrap.properties
: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
Ö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. Wenn der Zeitraum nicht vergangen ist, wird keine Änderung angezeigt. Warten Sie, bis der Zeitraum vergangen ist, und lösen Sie dann die Aktualisierungsprüfung aus.
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.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
<version>5.18.0</version>
</dependency>
Zum Aktivieren der Aktualisierung
bootstrap.properties
: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
Ö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 jetzt 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. Wenn das Aktualisierungsintervall nicht vergangen ist, wird keine Überprüfung auf Änderungen vorgenommen. Warten Sie, bis das Intervall vergangen ist, und lösen Sie dann die Aktualisierungsprüfung aus.
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.