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 opspring-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-web
activeert 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 AppConfigurationRefresh
beschikbaar, die kan worden gebruikt om te controleren of de cache is verlopen. Als deze is verlopen, wordt een vernieuwing geactiveerd.
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
'srefreshConfigurations()
retourneert eenMono
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.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
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.
Selecteer Toepassen.
Maak uw Spring Boot-app met Maven en voer deze uit.
mvn clean package mvn spring-boot:run
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/
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 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 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>
Bijwerken
bootstrap.properties
om vernieuwen in te schakelenspring.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
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.
Selecteer Toepassen.
Maak uw Spring Boot-app met Maven en voer deze uit.
mvn clean package mvn spring-boot:run
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/
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 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 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.