Share via


Tutorial: Utilizar a configuração dinâmica numa aplicação Java Spring

App Configuration tem duas bibliotecas para a Spring.

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

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

A atualização permite-lhe atualizar os seus valores de configuração sem ter de reiniciar a sua aplicação, embora faça com que todos os feijões no @RefreshScope sejam recriados. Verifica se existem alterações aos acionadores configurados, incluindo metadados. Por predefinição, a quantidade mínima de tempo entre as verificações de alterações, intervalo de atualização, está definida como 30 segundos.

spring-cloud-azure-appconfiguration-config-webA atualização automatizada é acionada com base na atividade, especificamente na Spring Web ServletRequestHandledEvent. Se um ServletRequestHandledEvent não for acionado, spring-cloud-azure-appconfiguration-config-weba atualização automatizada não aciona uma atualização mesmo que o tempo de expiração da cache tenha expirado.

Utilizar a atualização manual

Para utilizar a atualização manual, comece com uma aplicação Spring Boot que utiliza App Configuration, como a aplicação que cria ao seguir o início rápido do Spring Boot para App Configuration.

App Configuration expõe AppConfigurationRefresho , que pode ser utilizado para verificar se a cache expirou e se expirou, é acionada uma atualização.

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

    AppConfigurationRefresh's refreshConfigurations() devolve um Mono que é verdadeiro se uma atualização tiver sido acionada e falso se não for. Falso significa que o tempo de expiração da cache não expirou, não houve alterações ou outro thread está atualmente a verificar a existência de uma atualização.

  2. Atualizar bootstrap.properties para ativar a atualização

    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 App Configuration associado à sua aplicação. Selecione Explorador de Configuração em Operações e crie um novo par chave-valor ao selecionar + Criar>Chave-valor para adicionar os seguintes parâmetros:

    Chave Valor
    sentinel 1

    Deixe a Etiqueta e o 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 browser e aceda ao URL: http://localhost:8080. Verá a mensagem associada à sua chave.

    Também pode utilizar curl para testar a sua aplicação, por exemplo:

    curl -X GET http://localhost:8080/
    
  7. Para testar a configuração dinâmica, abra o portal Azure App Configuration associado à sua aplicação. Selecione Explorador de Configuração e atualize o valor da chave apresentada, por exemplo:

    Chave Valor
    /application/config.message Olá - Atualizado
  8. Atualize a chave do sentinel que criou anteriormente para um novo valor. Esta alteração aciona a aplicação para atualizar todas as chaves de configuração assim que o intervalo de atualização passar.

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

Nota

A biblioteca apenas verifica se existem alterações após o intervalo de atualização ter passado. Se o período não tiver passado, não será apresentada nenhuma alteração, terá de aguardar que o período passe e, em seguida, acione a verificação de atualização.

Utilizar a atualização automatizada

Para utilizar a atualização automatizada, comece com uma aplicação Spring Boot que utiliza App Configuration, como a aplicação que criar ao seguir o início rápido do Spring Boot para App Configuration.

Em seguida, abra o ficheiro pom.xml num editor de texto e adicione um <dependency> para spring-cloud-azure-appconfiguration-config-web utilizar 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 ativar a atualização

    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 App Configuration associado à sua aplicação. Selecione Explorador de Configuração em Operações e crie um novo par chave-valor ao selecionar + Criar>Chave-valor para adicionar os seguintes parâmetros:

    Chave Valor
    sentinel 1

    Deixe a Etiqueta e o 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 browser e aceda ao URL: http://localhost:8080. Verá a mensagem associada à sua chave.

    Também pode utilizar curl para testar a sua aplicação, por exemplo:

    curl -X GET http://localhost:8080/
    
  6. Para testar a configuração dinâmica, abra o portal Azure App Configuration associado à sua aplicação. Selecione Explorador de Configuração e atualize o valor da chave apresentada, por exemplo:

    Chave Valor
    /application/config.message Olá - Atualizado
  7. Atualize a chave do sentinel que criou anteriormente para um novo valor. Esta alteração aciona a aplicação para atualizar todas as chaves de configuração assim que o intervalo de atualização passar.

    Chave Valor
    sentinel 2
  8. Atualize a página do browser duas vezes para ver a nova mensagem apresentada. A primeira vez que aciona a atualização, a segunda carrega as alterações, à medida que o primeiro pedido é devolvido com o âmbito original.

Nota

A biblioteca só verifica a existência de alterações após o intervalo de atualização ter passado. Se o intervalo de atualização não tiver passado, não verificará a existência de alterações, terá de aguardar que o intervalo passe e, em seguida, acione a verificação de atualização.

Passos seguintes

Neste tutorial, ativou a aplicação Spring Boot para atualizar dinamicamente as definições de configuração a partir de App Configuration. Para obter mais perguntas, veja a documentação de referência, tem todos os detalhes sobre como funciona a biblioteca de Azure App Configuration do Spring Cloud. Para saber como utilizar uma identidade gerida do Azure para simplificar o acesso ao App Configuration, avance para o próximo tutorial.