Configuração de aplicações Java: visão geral de bibliotecas e ferramentas
O gerenciamento de configuração é uma das tarefas principais no desenvolvimento de aplicações Java modernas. A flexibilidade e a facilidade de configuração determinam o quão facilmente a aplicação se adaptará a diferentes ambientes: desenvolvimento, teste, produção. Neste artigo, abordaremos as principais abordagens e bibliotecas populares para trabalhar com configuração em Java.
Por que são necessárias ferramentas de configuração?
O padrão java.util.Properties e a leitura de arquivos .properties funcionam, mas têm limitações: falta de suporte para estruturas hierárquicas, dificuldade em mesclar configurações de diferentes fontes, tipagem fraca. Bibliotecas modernas resolvem esses problemas e oferecem:
- Suporte a múltiplos formatos:
YAML,JSON,HOCON,XML; - Sobreposição hierárquica de parâmetros (propriedades do sistema → variáveis de ambiente → arquivos);
- Acesso tipado a valores;
- Suporte a perfis e atualização dinâmica.
1. Spring Boot — padrão da indústria
Spring Boot é o framework mais popular para criar microsserviços e aplicações web. Seu sistema de configuração é flexível e poderoso.
Principais funcionalidades:
- Suporte a
application.propertieseapplication.yml; - Perfis (
application-dev.yml,application-prod.yml); - Anotação
@ConfigurationPropertiespara objetos bean tipados; - Hierarquia de fontes: linha de comando → JNDI → propriedades do sistema → variáveis de ambiente → arquivos.
Exemplo de uso:
// application.ymlserver: port: 8080app: name: MyApp timeout: 30
// Classe Java para configuração@ConfigurationProperties(prefix = "app")public class AppConfig { private String name; private int timeout; // getters e setters}
// Uso@RestControllerpublic class DemoController { @Autowired private AppConfig config;
@GetMapping("/info") public String info() { return config.getName() + " timeout: " + config.getTimeout(); }}Spring Boot vincula automaticamente as propriedades YAML aos campos do objeto Java, garantindo tipagem forte e validação.
2. MicroProfile Config — padrão para microsserviços
MicroProfile Config — parte da especificação Eclipse MicroProfile, destinada a arquiteturas em nuvem e de microsserviços. Ele fornece uma API unificada para acesso à configuração.
Principais características:
- Suporte a múltiplas fontes: arquivos, variáveis de ambiente, JNDI, personalizadas;
- Anotações
@Injecte@ConfigProperty; - Atualização dinâmica de valores (ao usar a extensão correspondente);
- Conversores de tipo padrão.
Exemplo:
@ApplicationScopedpublic class ConfigService { @Inject @ConfigProperty(name = "app.max.connections", defaultValue = "10") private int maxConnections;
@Inject @ConfigProperty(name = "db.url") private Optional<String> dbUrl;
public void printConfig() { System.out.println("Max connections: " + maxConnections); dbUrl.ifPresent(url -> System.out.println("DB URL: " + url)); }}A biblioteca permite substituir facilmente parâmetros por meio de variáveis de ambiente sem alterar o código, o que é crítico para ambientes conteinerizados (Docker, Kubernetes).
3. Typesafe Config (Lightbend Config)
Criada originalmente para Scala, mas funciona muito bem em Java também. Usa o formato HOCON (Human-Optimized Config Object Notation) — um superconjunto do JSON.
Pré
Também na biblioteca
Validação de dados em Rust: bibliotecas e abordagens
Aprendizado de Máquina em Go: visão geral de bibliotecas e frameworks (Golang)
Event Bus e padrão Observer em C++: implementação em C++ moderno