Esercitazione: Usare la configurazione dinamica in un'app Java Spring
Configurazione app dispone di due librerie per Spring.
spring-cloud-azure-appconfiguration-config
richiede Spring Boot e accetta una dipendenza daspring-cloud-context
.spring-cloud-azure-appconfiguration-config-web
richiede Spring Web insieme a Spring Boot e aggiunge anche il supporto per il controllo automatico dell'aggiornamento della configurazione.
Entrambe le librerie supportano l'attivazione manuale per verificare la presenza di valori di configurazione aggiornati.
L'aggiornamento consente di aggiornare i valori di configurazione senza dover riavviare l'applicazione, anche se provoca la ricreazione di tutti i fagioli in @RefreshScope
. Verifica la presenza di modifiche ai trigger configurati, inclusi i metadati. Per impostazione predefinita, la quantità minima di tempo tra i controlli per le modifiche, l'intervallo di aggiornamento è impostato su 30 secondi.
spring-cloud-azure-appconfiguration-config-web
L'aggiornamento automatico viene attivato in base all'attività, in particolare spring ServletRequestHandledEvent
Web. Se un ServletRequestHandledEvent
oggetto non viene attivato, spring-cloud-azure-appconfiguration-config-web
l'aggiornamento automatico non attiva un aggiornamento anche se la scadenza della cache è scaduta.
Per usare l'aggiornamento manuale, iniziare con un'app Spring Boot che usa Configurazione app, ad esempio l'app creata seguendo la guida introduttiva di Spring Boot per Configurazione app.
Configurazione app espone AppConfigurationRefresh
, che può essere usato per verificare se la cache è scaduta. Se è scaduto, viene attivato un aggiornamento.
Per usare
AppConfigurationRefresh
, aggiornare 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 restituiscerefreshConfigurations()
unMono
valore true se è stato attivato un aggiornamento e false in caso contrario. False indica che l'ora di scadenza della cache non è scaduta, non è stata apportata alcuna modifica o un altro thread sta attualmente controllando la disponibilità di un aggiornamento.Aggiornamento
bootstrap.properties
per abilitare l'aggiornamento: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
Aprire il portale di Azure e passare alla risorsa Configurazione app associata all'applicazione. Selezionare Esplora configurazione in Operazioni e creare una nuova coppia chiave-valore selezionando + Crea>chiave-valore per aggiungere i parametri seguenti:
Chiave valore sentinella 1 Lasciare vuoti i campi Etichetta e Tipo di contenuto per il momento.
Selezionare Applica.
Compilare l'applicazione Spring Boot con Maven ed eseguirla.
mvn clean package mvn spring-boot:run
Aprire una finestra del browser e passare all'URL:
http://localhost:8080
. Viene visualizzato il messaggio associato alla chiave.È anche possibile usare curl per testare l'applicazione, ad esempio:
curl -X GET http://localhost:8080/
Per testare la configurazione dinamica, aprire il portale di Configurazione app di Azure associato all'applicazione. Selezionare Esplora configurazioni e aggiornare il valore della chiave visualizzata, ad esempio:
Chiave valore /application/config.message Hello - Updated Aggiornare la chiave sentinel creata in precedenza a un nuovo valore. Questa modifica attiva l'applicazione per aggiornare tutte le chiavi di configurazione dopo il superamento dell'intervallo di aggiornamento.
Chiave valore sentinella 2 Aggiornare la pagina del browser due volte per visualizzare il nuovo messaggio. La prima volta che attiva l'aggiornamento, il secondo carica le modifiche.
Nota
La libreria controlla solo le modifiche apportate all'oggetto dopo il superamento dell'intervallo di aggiornamento. Se il periodo non è passato, non viene visualizzata alcuna modifica. Attendere il superamento del periodo, quindi attivare il controllo dell'aggiornamento.
Per usare l'aggiornamento automatico, iniziare con un'app Spring Boot che usa Configurazione app, ad esempio l'app creata seguendo la guida di avvio rapido per la creazione di un'app Spring Boot con Configurazione app.
Aprire quindi il file pom.xml in un editor di testo e aggiungere un <dependency>
oggetto per spring-cloud-azure-appconfiguration-config-web
usando il codice seguente.
Spring Boot
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
<version>5.8.0</version>
</dependency>
Aggiornamento
bootstrap.properties
per abilitare l'aggiornamentospring.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
Aprire il portale di Azure e passare alla risorsa Configurazione app associata all'applicazione. Selezionare Esplora configurazione in Operazioni e creare una nuova coppia chiave-valore selezionando + Crea>chiave-valore per aggiungere i parametri seguenti:
Chiave valore sentinella 1 Lasciare vuoti i campi Etichetta e Tipo di contenuto per il momento.
Selezionare Applica.
Compilare l'applicazione Spring Boot con Maven ed eseguirla.
mvn clean package mvn spring-boot:run
Aprire una finestra del browser e passare all'URL:
http://localhost:8080
. Viene visualizzato il messaggio associato alla chiave.È anche possibile usare curl per testare l'applicazione, ad esempio:
curl -X GET http://localhost:8080/
Per testare la configurazione dinamica, aprire il portale di Configurazione app di Azure associato all'applicazione. Selezionare Esplora configurazioni e aggiornare il valore della chiave visualizzata, ad esempio:
Chiave valore /application/config.message Hello - Updated Aggiornare la chiave sentinel creata in precedenza a un nuovo valore. Questa modifica attiva l'applicazione per aggiornare tutte le chiavi di configurazione dopo il superamento dell'intervallo di aggiornamento.
Chiave valore sentinella 2 Aggiornare la pagina del browser due volte per visualizzare il nuovo messaggio. La prima volta che viene attivato l'aggiornamento, il secondo carica le modifiche, perché la prima richiesta restituisce usando l'ambito originale.
Nota
La libreria controlla solo le modifiche apportate dopo il superamento dell'intervallo di aggiornamento. Se l'intervallo di aggiornamento non è passato, non verifica la presenza di modifiche. Attendere il passaggio dell'intervallo, quindi attivare il controllo dell'aggiornamento.
In questa esercitazione è stata abilitata l'app Spring Boot per aggiornare in modo dinamico le impostazioni di configurazione da Configurazione app. Per altre domande, vedere la documentazione di riferimento, con tutti i dettagli sul funzionamento della libreria spring cloud app Azure Configuration. Per informazioni su come usare un'identità gestita di Azure per semplificare l'accesso a Configurazione app, continuare con l'esercitazione successiva.