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 emspring-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-web
A 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-web
a 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 AppConfigurationRefresh
o , que pode ser utilizado para verificar se a cache expirou e se expirou, é acionada uma atualização.
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
'srefreshConfigurations()
devolve umMono
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.Atualizar
bootstrap.properties
para ativar a atualizaçãospring.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
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.
Selecione Aplicar.
Crie a aplicação Spring Boot com o Maven e execute-a.
mvn clean package mvn spring-boot:run
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/
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 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 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>
Atualizar
bootstrap.properties
para ativar a atualizaçãospring.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
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.
Selecione Aplicar.
Crie a aplicação Spring Boot com o Maven e execute-a.
mvn clean package mvn spring-boot:run
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/
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 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 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.