Zelfstudie: Dynamische configuratie in een Java Spring-app gebruiken

App Configuration heeft twee bibliotheken voor Spring.

  • spring-cloud-azure-appconfiguration-config vereist Spring Boot en heeft een afhankelijkheid van spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-web vereist Spring Web samen met Spring Boot en voegt ook ondersteuning toe voor het automatisch controleren van het vernieuwen van de configuratie.

Beide bibliotheken ondersteunen handmatige triggering om te controleren op vernieuwde configuratiewaarden.

Met Vernieuwen kunt u uw configuratiewaarden bijwerken zonder dat u de toepassing opnieuw hoeft te starten, hoewel alle beans in de @RefreshScope opnieuw worden gemaakt. Er wordt gecontroleerd op wijzigingen in geconfigureerde triggers, inclusief metagegevens. Standaard is de minimale hoeveelheid tijd tussen het controleren op wijzigingen( vernieuwingsinterval) ingesteld op 30 seconden.

spring-cloud-azure-appconfiguration-config-web's automatische vernieuwing wordt geactiveerd op basis van activiteit, met name spring web.ServletRequestHandledEvent Als een ServletRequestHandledEvent niet wordt geactiveerd, activeert de automatische vernieuwing geen vernieuwing, spring-cloud-azure-appconfiguration-config-webzelfs niet als de verlooptijd van de cache is verstreken.

Handmatig vernieuwen gebruiken

Als u handmatig vernieuwen wilt gebruiken, begint u met een Spring Boot-app die gebruikmaakt van App Configuration, zoals de app die u maakt door de Spring Boot-quickstart voor App Configuration te volgen.

App Configuration wordt weergegevenAppConfigurationRefresh. Dit kan worden gebruikt om te controleren of de cache is verlopen en of deze is verlopen, wordt een vernieuwing geactiveerd.

  1. Werk HelloController bij om te gebruiken 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() retourneert een Mono die waar is als een vernieuwing is geactiveerd en onwaar als dat niet het geval is. Onwaar betekent dat de verlooptijd van de cache niet is verlopen, dat er geen wijziging is aangebracht of dat een andere thread momenteel controleert op een vernieuwing.

  2. Bijwerken bootstrap.properties om vernieuwen in te schakelen

    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. Open Azure Portal en navigeer naar uw App Configuration resource die aan uw toepassing is gekoppeld. Selecteer Configuration Explorer onder Bewerkingen en maak een nieuw sleutel-waardepaar door +Sleutel-waardemaken> te selecteren om de volgende parameters toe te voegen:

    Sleutel Waarde
    Sentinel 1

    Laat Label en Inhoudstype nog even leeg.

  4. Selecteer Toepassen.

  5. Maak uw Spring Boot-app met Maven en voer deze uit.

    mvn clean package
    mvn spring-boot:run
    
  6. Open een browservenster en ga naar de URL: http://localhost:8080. U ziet het bericht dat bij uw sleutel hoort.

    U kunt ook curl gebruiken om uw toepassing te testen, bijvoorbeeld:

    curl -X GET http://localhost:8080/
    
  7. Als u de dynamische configuratie wilt testen, opent u de Azure App Configuration-portal die bij uw toepassing hoort. Selecteer Configuratie Explorer en werk de waarde van uw weergegeven sleutel bij, bijvoorbeeld:

    Sleutel Waarde
    /application/config.message Hallo - bijgewerkt
  8. Werk de Sentinel-sleutel die u eerder hebt gemaakt bij naar een nieuwe waarde. Deze wijziging activeert de toepassing om alle configuratiesleutels te vernieuwen zodra het vernieuwingsinterval is verstreken.

    Sleutel Waarde
    Sentinel 2
  9. Vernieuw de browserpagina twee keer om het nieuwe bericht weer te geven. De eerste keer wordt de vernieuwing geactiveerd, de tweede laadt de wijzigingen.

Notitie

De bibliotheek controleert alleen op wijzigingen in de nadat het vernieuwingsinterval is verstreken. Als de periode niet is verstreken, wordt er geen wijziging gezien. U moet wachten tot de periode is verstreken en vervolgens de vernieuwingscontrole activeren.

Automatisch vernieuwen gebruiken

Als u automatisch vernieuwen wilt gebruiken, begint u met een Spring Boot-app die gebruikmaakt van App Configuration, zoals de app die u hebt gemaakt door de Spring Boot-quickstart voor App Configuration te volgen.

Open vervolgens het pom.xml-bestand in een teksteditor en voeg een <dependency> toe voor spring-cloud-azure-appconfiguration-config-web met behulp van de volgende code.

Spring Boot

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>5.8.0</version>
</dependency>
  1. Bijwerken bootstrap.properties om vernieuwen in te schakelen

    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. Open Azure Portal en navigeer naar uw App Configuration resource die aan uw toepassing is gekoppeld. Selecteer Configuration Explorer onder Bewerkingen en maak een nieuw sleutel-waardepaar door +Sleutel-waardemaken> te selecteren om de volgende parameters toe te voegen:

    Sleutel Waarde
    Sentinel 1

    Laat Label en Inhoudstype nog even leeg.

  3. Selecteer Toepassen.

  4. Maak uw Spring Boot-app met Maven en voer deze uit.

    mvn clean package
    mvn spring-boot:run
    
  5. Open een browservenster en ga naar de URL: http://localhost:8080. U ziet het bericht dat bij uw sleutel hoort.

    U kunt ook curl gebruiken om uw toepassing te testen, bijvoorbeeld:

    curl -X GET http://localhost:8080/
    
  6. Als u de dynamische configuratie wilt testen, opent u de Azure App Configuration-portal die bij uw toepassing hoort. Selecteer Configuratie Explorer en werk de waarde van uw weergegeven sleutel bij, bijvoorbeeld:

    Sleutel Waarde
    /application/config.message Hallo - bijgewerkt
  7. Werk de Sentinel-sleutel die u eerder hebt gemaakt bij naar een nieuwe waarde. Deze wijziging activeert de toepassing om alle configuratiesleutels te vernieuwen zodra het vernieuwingsinterval is verstreken.

    Sleutel Waarde
    Sentinel 2
  8. Vernieuw de browserpagina twee keer om het nieuwe bericht weer te geven. De eerste keer wordt de vernieuwing geactiveerd, de tweede laadt de wijzigingen, terwijl de eerste aanvraag wordt geretourneerd met behulp van het oorspronkelijke bereik.

Notitie

De bibliotheek controleert alleen op wijzigingen nadat het vernieuwingsinterval is verstreken. Als het vernieuwingsinterval niet is verstreken, wordt er niet gecontroleerd op wijzigingen. U moet wachten tot het interval is verstreken en vervolgens de vernieuwingscontrole activeren.

Volgende stappen

In deze zelfstudie hebt u uw Spring Boot-app ingeschakeld voor het dynamisch vernieuwen van configuratie-instellingen vanuit App Configuration. Zie de naslagdocumentatie voor meer vragen. Hierin vindt u alle details over de werking van de Spring Cloud Azure App Configuration-bibliotheek. Als u wilt weten hoe u een door Azure beheerde identiteit kunt gebruiken om de toegang tot App Configuration te stroomlijnen, gaat u verder met de volgende zelfstudie.