DEV Community

Cover image for Hot-Reload de Configurações de Portal Manager via /actuator/refresh no Spring Boot
Gilson Silva
Gilson Silva

Posted on

Hot-Reload de Configurações de Portal Manager via /actuator/refresh no Spring Boot

1. Como funciona o /actuator/refresh?

O /actuator/refresh recarrega propriedades externas de qualquer origem suportada pelo Spring Cloud (não só ConfigMap). Ou seja, se sua aplicação já busca configs de Portais Managers via PropertySource ou Config Server, o refresh pode funcionar sim para esses valores.


2. Fontes Externas Suportadas

  • Spring Cloud Config Server (centraliza configs em Git, S3, etc.)
  • AWS Parameter Store e AWS Secrets Manager (via Spring Cloud AWS)
  • HashiCorp Vault, Consul, etc.
  • Qualquer fonte implementada via PropertySource

Resumo: Se o Portal Manager está integrado como um PropertySource do Spring Environment, o /actuator/refresh pode recarregar esses valores.


3. Exemplo: AWS Parameter Store/Secrets Manager

a) Dependências

<!-- Spring Boot Actuator e Cloud -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>io.awspring.cloud</groupId>
  <artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
</dependency>
<!-- ou -->
<dependency>
  <groupId>io.awspring.cloud</groupId>
  <artifactId>spring-cloud-starter-aws-secrets-manager-config</artifactId>
</dependency>
Enter fullscreen mode Exit fullscreen mode

b) Configuração do application.properties

management.endpoints.web.exposure.include=refresh,health,info
spring.config.import=aws-parameterstore:/ # ou aws-secretsmanager:/
Enter fullscreen mode Exit fullscreen mode

c) Uso no código

@Value("${minha.configuracao.sensivel}")
private String segredo;
Enter fullscreen mode Exit fullscreen mode

d) Processo de atualização

  1. Altere o valor no Portal Manager (ex: AWS Parameter Store).
  2. Chame o endpoint /actuator/refresh na aplicação.
  3. O valor é recarregado sem reiniciar o pod.

4. Observações Importantes

  • Nem todos os beans/leitura de config reagem automaticamente ao refresh! Use @RefreshScope nas classes/beans que dependem desses valores dinâmicos.
@RefreshScope
@RestController
public class MinhaController {
    @Value("${minha.configuracao.sensivel}")
    private String segredo;
    // ...
}
Enter fullscreen mode Exit fullscreen mode
  • O /actuator/refresh não recarrega configs de pods alheios. Se você tem múltiplos pods, chame em todos (ou utilize Spring Cloud Bus para broadcast).
  • Segurança: configure autenticação no endpoint /actuator/refresh!
  • Para AWS, use as bibliotecas do Spring Cloud AWS.

5. Fluxo Resumido

  1. Integre o Portal Manager à sua aplicação Spring Boot via PropertySource.
  2. Use /actuator/refresh para recarregar configs em tempo real.
  3. Marque beans críticos como @RefreshScope.

Conclusão

Você não precisa usar ConfigMap para usar /actuator/refresh! O segredo é garantir que seu Portal Manager está integrado como fonte de propriedades externas no Spring. Após alterar o valor no portal, basta acionar o refresh.

Top comments (0)