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 da spring-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-webL'aggiornamento automatico viene attivato in base all'attività, in particolare spring ServletRequestHandledEventWeb. Se un ServletRequestHandledEvent oggetto non viene attivato, spring-cloud-azure-appconfiguration-config-webl'aggiornamento automatico non attiva un aggiornamento anche se la scadenza della cache è scaduta.

Usare l'aggiornamento manuale

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.

  1. 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 restituisce refreshConfigurations() un Mono 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.

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

  4. Selezionare Applica.

  5. Compilare l'applicazione Spring Boot con Maven ed eseguirla.

    mvn clean package
    mvn spring-boot:run
    
  6. 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/
    
  7. 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
  8. 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
  9. 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.

Usare l'aggiornamento automatico

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

  3. Selezionare Applica.

  4. Compilare l'applicazione Spring Boot con Maven ed eseguirla.

    mvn clean package
    mvn spring-boot:run
    
  5. 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/
    
  6. 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
  7. 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
  8. 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.

Passaggi successivi

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.