Share via


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

A Configuração de Aplicativos tem duas bibliotecas para Spring.

  • spring-cloud-azure-appconfiguration-config exige o Spring Boot e assume uma dependência de spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-web requer o Spring Web junto com o Spring Boot e também adiciona suporte para verificação automática da atualização de configuração.

As duas bibliotecas dão suporte ao disparo manual para verificar se há valores de configuração atualizados.

A atualização permite que você atualize seus valores de configuração sem precisar reiniciar seu aplicativo, embora isso faça com que todas as metas no @RefreshScope sejam recriadas. 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, o intervalo de atualização, é definido como 30 segundos.

A atualização automatizada de spring-cloud-azure-appconfiguration-config-web é disparada com base na atividade, especificamente o ServletRequestHandledEvent do Spring Web. Se um ServletRequestHandledEvent não for disparado, a atualização automatizada de spring-cloud-azure-appconfiguration-config-web não dispara uma atualização mesmo que o tempo de expiração do cache tenha transcorrido.

Usar a atualização manual

Para usar a atualização manual, comece com um aplicativo Spring Boot que usa a Configuração de Aplicativos, como o aplicativo criado com o Início rápido do Spring Boot para a Configuração de Aplicativos.

A Configuração de Aplicativos expõe AppConfigurationRefresh, que pode ser usada para verificar se o cache expirou e, caso tenha expirado, uma atualização é disparada.

  1. Atualize o HelloController para usar 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();
        }
    }
    

    refreshConfigurations() de AppConfigurationRefresh retornará um Mono que será true se uma atualização tiver sido disparada e false se não tiver. False significa que o tempo de expiração do cache não transcorreu, que não houve alteração ou que outro thread está verificando uma atualização no momento.

  2. Atualizar bootstrap.properties para habilitar métricas

    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 para o recurso de Configuração de Aplicativos associado ao seu aplicativo. Selecione Explorador de configurações em Operações e crie um par chave-valor selecionando + Criar>chave-valor para adicionar os seguintes parâmetros:

    Chave Valor
    sentinel 1

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

  4. Escolha Aplicar.

  5. Compile o aplicativo Spring Boot com Maven e execute-o.

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

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

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

    Chave Valor
    /application/config.message Hello - Updated
  8. Atualize a chave do Sentinel criada anteriormente para um novo valor. Esta alteração dispara o aplicativo para atualizar todas as chaves de configuração após o término do intervalo de atualização.

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

Observação

A biblioteca só verifica se há alterações após o intervalo de atualização ter passado, se o período não tiver passado, nenhuma alteração será vista, você terá que aguardar o período passar e disparar a verificação de atualização.

Usar a atualização automatizada

Para usar a atualização automatizada, comece com um aplicativo Spring Boot que usa a Configuração de Aplicativos, como o aplicativo criado com o Início rápido do Spring Boot para a Configuração de Aplicativos.

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

Spring Boot

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>5.8.0</version>
</dependency>
  1. Atualizar bootstrap.properties para habilitar métricas

    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 para o recurso de Configuração de Aplicativos associado ao seu aplicativo. Selecione Explorador de configurações em Operações e crie um par chave-valor selecionando + Criar>chave-valor para adicionar os seguintes parâmetros:

    Chave Valor
    sentinel 1

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

  3. Escolha Aplicar.

  4. Compile o aplicativo Spring Boot com Maven e execute-o.

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

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

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

    Chave Valor
    /application/config.message Hello - Updated
  7. Atualize a chave do Sentinel criada anteriormente para um novo valor. Esta alteração dispara o aplicativo para atualizar todas as chaves de configuração após o término do intervalo de atualização.

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

Observação

A biblioteca só verifica se há alterações depois que o intervalo de atualização tiver transcorrido. Se o intervalo de atualização não tiver transcorrido, ela não verificará se há alterações. Será necessário aguardar o término desse intervalo e disparar a verificação de atualização.

Próximas etapas

Neste tutorial, você habilitou seu aplicativo Spring Boot para atualizar dinamicamente as definições de configuração na Configuração de Aplicativos. Para obter mais perguntas, confira a documentação de referência, ela tem 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 pelo Azure para simplificar o acesso à Configuração de Aplicativos, passe para o próximo tutorial.