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 spring-cloud-contextav .
  • 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-webAutomatiserad 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ä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.

  1. Om du vill använda AppConfigurationRefreshuppdaterar 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'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 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.

  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. 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/
    
  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 din visade nyckel, 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.

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>
  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 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.

  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. 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/
    
  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 din visade nyckel, 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.

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.