Partilhar via


Tutorial: Usar a configuração dinâmica em um aplicativo Java Spring

A Configuração do Aplicativo tem duas bibliotecas para o Spring.

  • spring-cloud-azure-appconfiguration-config requer Spring Boot e depende do spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-web requer o Spring Web juntamente com o Spring Boot, e também adiciona suporte para verificação automática da atualização da configuração.

Ambas as bibliotecas suportam acionamento manual para verificar se há valores de configuração atualizados.

Atualizar permite que você atualize seus valores de configuração sem ter que reiniciar seu aplicativo, embora faça com que todos os beans no @RefreshScope sejam recriados. Ele verifica se há alterações nos gatilhos configurados, incluindo metadados. Por padrão, o tempo mínimo entre as verificações de alterações, intervalo de atualização, é definido como 30 segundos.

spring-cloud-azure-appconfiguration-config-webA atualização automatizada do é acionada com base na atividade, especificamente no Spring Web.ServletRequestHandledEvent Se um ServletRequestHandledEvent não for acionado, a atualização automatizada do não acionará uma atualização, spring-cloud-azure-appconfiguration-config-webmesmo que o tempo de expiração do cache tenha expirado.

Usar a atualização manual

Para usar a atualização manual, comece com um aplicativo Spring Boot que usa a Configuração do Aplicativo, como o aplicativo que você cria seguindo o início rápido do Spring Boot para Configuração do Aplicativo.

A Configuração da App expõe AppConfigurationRefresh, que verifica se o intervalo de atualização decorreu. Se o intervalo de atualização tiver passado, ele acionará uma atualização.

  1. Para usar AppConfigurationRefresho , atualize o 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 refreshConfigurations() retorna a Mono que é true se uma atualização for acionada e false se não. False significa que o tempo de expiração do cache não expirou, não houve alteração ou outro thread está atualmente verificando se há uma atualização.

    Nota

    Para bibliotecas como o Spring WebFlux que exigem chamadas sem bloqueio, refreshConfigurations() precisa ser encapsulado em uma thread, pois o carregamento de configurações requer uma chamada de bloqueio.

    new Thread(() -> refresh.refreshConfigurations()).start();
    
  2. Para ativar a atualização bootstrap.properties:

    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. Abra o Portal do Azure e navegue até o recurso de Configuração do Aplicativo associado ao seu aplicativo. Selecione Configuration Explorer em Operations e crie um novo par chave-valor selecionando + Create>Key-value para adicionar os seguintes parâmetros:

    Chave valor
    sentinela 1

    Deixe Rótulo e Tipo de Conteúdo vazios por enquanto.

  4. Selecione Aplicar.

  5. Crie a aplicação Spring Boot com o Maven e execute-a.

    mvn clean package
    mvn spring-boot:run
    
  6. Abra uma janela do navegador e vá para o URL: http://localhost:8080. Você verá a mensagem associada à sua chave.

    Você também pode usar a ondulação para testar sua aplicação, por exemplo:

    curl -X GET http://localhost:8080/
    
  7. Para testar a configuração dinâmica, abra o portal de Configuração de Aplicativo do Azure associado ao seu aplicativo. Selecione Configuration Explorer e atualize o valor da chave exibida, por exemplo:

    Chave valor
    /aplicativo/config.message Olá - Atualizado
  8. Atualize a chave sentinela criada anteriormente para um novo valor. Essa alteração aciona o aplicativo para atualizar todas as chaves de configuração assim que o intervalo de atualização é passado.

    Chave valor
    sentinela 2
  9. Atualize a página do navegador duas vezes para ver a nova mensagem exibida. A primeira vez que aciona a atualização, a segunda carrega as alterações.

    Nota

    A biblioteca verifica se há alterações somente depois que o intervalo de atualização passa. Se o intervalo de atualização não tiver passado, ele não verificará se há alterações. Aguarde o intervalo passar e, em seguida, acione a verificação de atualização.

Usar atualização automatizada

Para usar a atualização automatizada, comece com um aplicativo Spring Boot que use a Configuração do Aplicativo, como o aplicativo que você cria seguindo o início rápido do Spring Boot para Configuração do Aplicativo.

Em seguida, abra o arquivo pom.xml em um editor de texto e adicione um <dependency> para spring-cloud-azure-appconfiguration-config-web usar o código a seguir.

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>6.0.0</version>
</dependency>
  1. Para ativar a atualização application.properties:

    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. Abra o Portal do Azure e navegue até o recurso de Configuração do Aplicativo associado ao seu aplicativo. Selecione Configuration Explorer em Operations e crie um novo par chave-valor selecionando + Create>Key-value para adicionar os seguintes parâmetros:

    Chave valor
    sentinela 1

    Deixe Rótulo e Tipo de Conteúdo vazios por enquanto.

  3. Selecione Aplicar.

  4. Crie a aplicação Spring Boot com o Maven e execute-a.

    mvn clean package
    mvn spring-boot:run
    
  5. Abra uma janela do navegador e vá para o URL: http://localhost:8080. Agora você vê a mensagem associada à sua chave.

    Você também pode usar a ondulação para testar sua aplicação, por exemplo:

    curl -X GET http://localhost:8080/
    
  6. Para testar a configuração dinâmica, abra o portal de Configuração de Aplicativo do Azure associado ao seu aplicativo. Selecione Configuration Explorer e atualize o valor da chave exibida, por exemplo:

    Chave valor
    /aplicativo/config.message Olá - Atualizado
  7. Atualize a chave sentinela criada anteriormente para um novo valor. Essa alteração aciona o aplicativo para atualizar todas as chaves de configuração assim que o intervalo de atualização é passado.

    Chave valor
    sentinela 2
  8. Atualize a página do navegador duas vezes para ver a nova mensagem exibida. A primeira vez que aciona a atualização, a segunda carrega as alterações, pois a primeira solicitação retorna usando o escopo original.

    Nota

    A biblioteca verifica se há alterações somente depois que o intervalo de atualização passa. Se o intervalo de atualização não tiver passado, ele não verificará se há alterações. Aguarde o intervalo passar e, em seguida, acione a verificação de atualização.

Próximos passos

Neste tutorial, você habilitou seu aplicativo Spring Boot para atualizar dinamicamente as definições de configuração da Configuração do aplicativo. Para mais perguntas, consulte a documentação de referência, que contém todos os detalhes sobre como funciona a biblioteca de Configuração de Aplicativos do Azure do Spring Cloud. Para saber como usar uma identidade gerenciada do Azure para simplificar o acesso à Configuração do Aplicativo, continue para o próximo tutorial.