Delen via


Zelfstudie: Dynamische configuratie gebruiken in een Java Spring-app

App Configuration heeft twee bibliotheken voor Spring.

  • spring-cloud-azure-appconfiguration-config vereist Spring Boot en neemt een afhankelijkheid op 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 op te starten, hoewel alle bonen in de @RefreshScope toepassing opnieuw worden gemaakt. Er wordt gecontroleerd op wijzigingen in geconfigureerde triggers, inclusief metagegevens. De minimale tijd tussen controles op wijzigingen, vernieuwingsinterval, is standaard ingesteld op 30 seconden.

spring-cloud-azure-appconfiguration-config-web's geautomatiseerde vernieuwing wordt geactiveerd op basis van activiteit, met name Spring Web's ServletRequestHandledEvent. Als een ServletRequestHandledEvent niet wordt geactiveerd, spring-cloud-azure-appconfiguration-config-webactiveert automatische vernieuwing geen vernieuwing, zelfs niet als de verlooptijd van de cache is verlopen.

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 maakt AppConfigurationRefreshbeschikbaar, die kan worden gebruikt om te controleren of de cache is verlopen. Als 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 waarde 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 opgetreden of dat er momenteel wordt gecontroleerd op een vernieuwing door een andere thread.

  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 is gekoppeld aan uw toepassing. Selecteer Configuration Explorer onder Bewerkingen en maak een nieuw sleutel-waardepaar door +>Sleutelwaarde maken te selecteren om de volgende parameters toe te voegen:

    Sleutel Weergegeven als
    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 is gekoppeld aan uw sleutel.

    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 Weergegeven als
    /application/config.message Hallo - bijgewerkt
  8. Werk de sentinel-sleutel bij die u eerder hebt gemaakt naar een nieuwe waarde. Met deze wijziging wordt de toepassing geactiveerd om alle configuratiesleutels te vernieuwen zodra het vernieuwingsinterval is verstreken.

    Sleutel Weergegeven als
    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 bibliotheek nadat het vernieuwingsinterval is verstreken. Als de periode niet is verstreken, wordt er geen wijziging weergegeven. Wacht tot de periode is verstreken en activeer vervolgens de vernieuwingscontrole.

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> bestand toe voor spring-cloud-azure-appconfiguration-config-web het gebruik 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 is gekoppeld aan uw toepassing. Selecteer Configuration Explorer onder Bewerkingen en maak een nieuw sleutel-waardepaar door +>Sleutelwaarde maken te selecteren om de volgende parameters toe te voegen:

    Sleutel Weergegeven als
    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 nu het bericht dat is gekoppeld aan uw sleutel.

    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 Weergegeven als
    /application/config.message Hallo - bijgewerkt
  7. Werk de sentinel-sleutel bij die u eerder hebt gemaakt naar een nieuwe waarde. Met deze wijziging wordt de toepassing geactiveerd om alle configuratiesleutels te vernieuwen zodra het vernieuwingsinterval is verstreken.

    Sleutel Weergegeven als
    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, omdat 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 doorgegeven, wordt er niet gecontroleerd op wijzigingen. Wacht tot het interval is verstreken en activeer vervolgens de vernieuwingscontrole.

Volgende stappen

In deze zelfstudie hebt u uw Spring Boot-app ingeschakeld voor het dynamisch vernieuwen van configuratie-instellingen vanuit App Configuration. Zie de referentiedocumentatie voor meer vragen en bevat 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.