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 il trigger 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 tutti i fagioli nell'oggetto @RefreshScope devono essere ricreati. Verifica le modifiche apportate 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 automatizzato viene attivato in base all'attività ServletRequestHandledEvent, in particolare a Spring Web. Se un ServletRequestHandledEvent 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 Spring Boot per Configurazione app.

Configurazione app espone AppConfigurationRefresh, che può essere usato per verificare se la cache è scaduta e se è scaduto un aggiornamento.

  1. Aggiornare HelloController per usare 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();
        }
    }
    

    AppConfigurationRefreshRestituisce refreshConfigurations() un Mono valore true se è stato attivato un aggiornamento e false in caso contrario. False indica che la scadenza della cache non è scaduta, non è stata modificata o un altro thread sta attualmente verificando un aggiornamento.

  2. Aggiornamento per abilitare bootstrap.properties 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. Verrà 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 passaggio dell'intervallo di aggiornamento.

    Chiave Valore
    sentinella 2
  9. Aggiornare la pagina del browser due volte per visualizzare il nuovo messaggio visualizzato. La prima volta che attiva l'aggiornamento, la seconda carica le modifiche.

Nota

La libreria controlla solo le modifiche apportate dopo il superamento dell'intervallo di aggiornamento, se il periodo non è passato, non verrà visualizzata alcuna modifica, sarà necessario attendere il passaggio del periodo, quindi attivare il controllo di 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 l'uso del 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 per abilitare bootstrap.properties 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. Verrà 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 passaggio dell'intervallo di aggiornamento.

    Chiave Valore
    sentinella 2
  8. Aggiornare la pagina del browser due volte per visualizzare il nuovo messaggio visualizzato. La prima volta che attiva l'aggiornamento, la seconda carica le modifiche, in quanto la prima richiesta restituisce usando l'ambito originale.

Nota

La libreria controlla solo le modifiche apportate dopo il passaggio dell'intervallo di aggiornamento. Se l'intervallo di aggiornamento non è passato, non verificherà le modifiche, sarà necessario attendere il passaggio dell'intervallo, quindi attivare il controllo di 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, contiene tutti i dettagli su come funziona la libreria di Configurazione app di Azure Spring Cloud. Per informazioni su come usare un'identità gestita di Azure per semplificare l'accesso a Configurazione app, continuare con l'esercitazione successiva.