Självstudie: Använda dynamisk konfiguration i en Java Spring-app
App Configuration har två bibliotek för Spring.
spring-cloud-azure-appconfiguration-config
kräver Spring Boot och är beroendespring-cloud-context
av .spring-cloud-azure-appconfiguration-config-web
kräver Spring Web tillsammans med Spring Boot och lägger även till stöd för automatisk kontroll av konfigurationsuppdatering.
Båda biblioteken stöder manuell utlösande för att söka efter uppdaterade konfigurationsvärden.
Med Uppdatera kan du uppdatera konfigurationsvärdena utan att behöva starta om programmet, men det gör att alla bönor i @RefreshScope
återskapas. Den söker efter ändringar i konfigurerade utlösare, inklusive metadata. Som standard är den minsta tiden mellan sökningar efter ändringar, uppdateringsintervall, inställt på 30 sekunder.
spring-cloud-azure-appconfiguration-config-web
Automatiserad uppdatering utlöses baserat på aktivitet, särskilt Spring Webs ServletRequestHandledEvent
. Om en ServletRequestHandledEvent
inte utlöses spring-cloud-azure-appconfiguration-config-web
utlöser den automatiska uppdateringen inte en uppdatering även om cachens förfallotid har upphört att gälla.
Använd manuell uppdatering
Om du vill använda manuell uppdatering börjar du med en Spring Boot-app som använder App Configuration, till exempel den app du skapar genom att följa Spring Boot-snabbstarten för App Configuration.
App Configuration exponerar AppConfigurationRefresh
, som kan användas för att kontrollera om cachen har upphört att gälla. Om den har upphört att gälla utlöses en uppdatering.
Om du vill använda
AppConfigurationRefresh
uppdaterar du HelloController.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(); } }
AppConfigurationRefresh
'srefreshConfigurations()
returnerar ettMono
som är sant om en uppdatering har utlösts och falskt om inte. False innebär antingen att cachens förfallotid inte har upphört att gälla, att det inte har skett någon ändring eller att en annan tråd för närvarande söker efter en uppdatering.Uppdatera
bootstrap.properties
för att aktivera uppdatering: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
Öppna Azure-portalen och gå till din appkonfigurationsresurs som är associerad med ditt program. Välj Configuration Explorer under Åtgärder och skapa ett nytt nyckel/värde-par genom att välja + Skapa>nyckelvärde för att lägga till följande parametrar:
Tangent Värde sentinel 1 Låt etikett och innehållstyp vara tomma för tillfället.
Välj Använd.
Skapa Spring Boot-appen med Maven och kör den:
mvn clean package mvn spring-boot:run
Öppna ett webbläsarfönster och gå till URL:en:
http://localhost:8080
. Du ser meddelandet som är associerat med nyckeln.Du kan också använda curl för att testa ditt program, till exempel:
curl -X GET http://localhost:8080/
Om du vill testa dynamisk konfiguration öppnar du Azure App Configuration-portalen som är associerad med ditt program. Välj Configuration Explorer och uppdatera värdet för din visade nyckel, till exempel:
Tangent Värde /application/config.message Hello – uppdaterad Uppdatera sentinel-nyckeln som du skapade tidigare till ett nytt värde. Den här ändringen utlöser programmet för att uppdatera alla konfigurationsnycklar när uppdateringsintervallet har passerat.
Tangent Värde sentinel 2 Uppdatera webbläsarsidan två gånger för att se det nya meddelandet som visas. Första gången utlöser uppdateringen läser den andra in ändringarna.
Kommentar
Biblioteket söker bara efter ändringar efter att uppdateringsintervallet har passerat. Om perioden inte har passerat visas ingen ändring. Vänta tills perioden har passerat och utlös sedan uppdateringskontrollen.
Använda automatisk uppdatering
Om du vill använda automatisk uppdatering börjar du med en Spring Boot-app som använder App Configuration, till exempel den app som du skapar genom att följa Spring Boot-snabbstarten för App Configuration.
Öppna sedan filen pom.xml i en textredigerare och lägg till en <dependency>
för spring-cloud-azure-appconfiguration-config-web
att använda följande kod.
Spring Boot
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
<version>5.8.0</version>
</dependency>
Uppdatera
bootstrap.properties
för att aktivera uppdateringspring.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
Öppna Azure-portalen och gå till din appkonfigurationsresurs som är associerad med ditt program. Välj Configuration Explorer under Åtgärder och skapa ett nytt nyckel/värde-par genom att välja + Skapa>nyckelvärde för att lägga till följande parametrar:
Tangent Värde sentinel 1 Låt etikett och innehållstyp vara tomma för tillfället.
Välj Använd.
Skapa Spring Boot-appen med Maven och kör den:
mvn clean package mvn spring-boot:run
Öppna ett webbläsarfönster och gå till URL:en:
http://localhost:8080
. Nu visas meddelandet som är associerat med nyckeln.Du kan också använda curl för att testa ditt program, till exempel:
curl -X GET http://localhost:8080/
Om du vill testa dynamisk konfiguration öppnar du Azure App Configuration-portalen som är associerad med ditt program. Välj Configuration Explorer och uppdatera värdet för din visade nyckel, till exempel:
Tangent Värde /application/config.message Hello – uppdaterad Uppdatera sentinel-nyckeln som du skapade tidigare till ett nytt värde. Den här ändringen utlöser programmet för att uppdatera alla konfigurationsnycklar när uppdateringsintervallet har passerat.
Tangent Värde sentinel 2 Uppdatera webbläsarsidan två gånger för att se det nya meddelandet som visas. Första gången utlöser uppdateringen läser den andra in ändringarna, eftersom den första begäran returneras med det ursprungliga omfånget.
Kommentar
Biblioteket söker bara efter ändringar efter att uppdateringsintervallet har passerat. Om uppdateringsintervallet inte har passerat söker det inte efter ändringar. Vänta tills intervallet har passerat och utlös sedan uppdateringskontrollen.
Nästa steg
I den här självstudien har du aktiverat Spring Boot-appen för att dynamiskt uppdatera konfigurationsinställningarna från App Configuration. Mer information finns i referensdokumentationen om hur Spring Cloud Azure App Configuration-biblioteket fungerar. Om du vill lära dig hur du använder en hanterad Azure-identitet för att effektivisera åtkomsten till App Configuration fortsätter du till nästa självstudie.