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 beroende av spring-cloud-context.
  • 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 dina konfigurationsvärden 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 kontrollerna för ändringar, uppdateringsintervallet, inställd på 30 sekunder.

spring-cloud-azure-appconfiguration-config-web's automatiserade uppdatering utlöses baserat på aktivitet, särskilt Spring Webs ServletRequestHandledEvent. Om en ServletRequestHandledEvent inte utlöses spring-cloud-azure-appconfiguration-config-webutlöser den automatiska uppdateringen inte en uppdatering även om cachens förfallotid har upphört att gälla.

Använda manuell uppdatering

Om du vill använda manuell uppdatering börjar du med en Spring Boot-app som använder App Configuration, till exempel appen 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 och om den har upphört att gälla utlöses en uppdatering.

  1. Uppdatera HelloController för att använda AppConfigurationRefresh.

    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's refreshConfigurations() returnerar ett Mono 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.

  2. 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
    
  3. Öppna Azure-portalen och gå till din App Configuration resurs 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ämna Etikett och Innehållstyp tom för tillfället.

  4. Välj Använd.

  5. Skapa Spring Boot-appen med Maven och kör den:

    mvn clean package
    mvn spring-boot:run
    
  6. Öppna ett webbläsarfönster och gå till URL:en: http://localhost:8080. Meddelandet som är associerat med nyckeln visas.

    Du kan också använda curl för att testa ditt program, till exempel:

    curl -X GET http://localhost:8080/
    
  7. 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 den visade nyckeln, till exempel:

    Tangent Värde
    /application/config.message Hello – uppdaterad
  8. 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
  9. 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.

Anteckning

Biblioteket söker bara efter ändringar efter att uppdateringsintervallet har passerat, om perioden inte har passerat kommer ingen ändring att visas, du måste vänta tills perioden har passerat och sedan utlösa 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 appen du skapar genom att följa Spring Boot-snabbstarten för App Configuration.

Öppna sedan filenpom.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>
  1. 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
    
  2. Öppna Azure-portalen och gå till din App Configuration resurs 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ämna Etikett och Innehållstyp tom för tillfället.

  3. Välj Använd.

  4. Skapa Spring Boot-appen med Maven och kör den:

    mvn clean package
    mvn spring-boot:run
    
  5. Öppna ett webbläsarfönster och gå till URL:en: http://localhost:8080. Meddelandet som är associerat med nyckeln visas.

    Du kan också använda curl för att testa ditt program, till exempel:

    curl -X GET http://localhost:8080/
    
  6. 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 den visade nyckeln, till exempel:

    Tangent Värde
    /application/config.message Hello – uppdaterad
  7. 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
  8. 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.

Anteckning

Biblioteket söker bara efter ändringar när uppdateringsintervallet har passerat. Om uppdateringsintervallet inte har passerat kommer det inte att söka efter ändringar. Du måste vänta tills intervallet har passerat och sedan utlösa 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.