Como acessar a configuração com MicroProfile Config?
Com MicroProfileConfig você pode acessar a configuração:
- Com código Java: Não precisa de API adicional, simplesmente use o seguinte código:
Optional<String> value = ConfigProvider.getConfig().getOptionalValue(propertyName, String.class);
ou
String value = ConfigProvider.getConfig().getValue(propertyName, String.class);
- Usando CDI e a anotação @ConfigProperty: Se sua aplicação já tem CDI você pode então injetar qualquer propriedade que será convertida para o tipo alvo (incluindo objetos customizados). Você pode configurar um valor padrão para a propriedade;
- Usando CDI e injetando o objeto Config: Com o objeto Config você tem acessa as configurações também.
Qual a origem da configuração?
Cada fonte de configuração tem um prioridade, a fonte com maior prioridade toma procedência caso haja conflito (mesma propriedade definida em duas fontes diferentes. As configurações podem vir (por padrão) de:
- Uma propriedade de sistema: São aquelas que modificamos com System.setProperty ou quando iniciamos a aplicação passando o parâmetro -Dpropriedade=valor . Prioridade é 400;
- Propriedades de System.env: Tem prioridade 300.
- Propriedades do arquivo META-INF/microprofile-config.properties: Esse é o arquivo padrão lido para se acessar valores de propriedades;
Há também a possibilidade de criar sua propria fonte de armazenamento de propriedade que pode ser qualquer coisa que possa ser acessível do código java: um arquivo, um banco de dados, um web service e mais.
Exemplo
Vamos mostrar agora um exemplo muito simples de um Web Service que tem uma configuração injetada e que permite ler qualquer configuração. A configuração é bem simples, você pode baixar um aplicação de exemplo no site do wildfly swarm que tenha a dependência MicroProfile e começar a codar.
Gerando um projeto Wildfly Swarm |
Só um aviso sobre a versão, usem a versão version.wildfly.swarm como 2017.12.1 ou mais nova. Você já poderá rodar seu código usando mvn clean package wildfly-swarm:run. No nosso caso temos um único Web Service que mostra:
1. Como injetar uma propriedade
2. Como injetar o objeto Config e pegar propriedades dele.
Veja abaixo o código do nosso Web Service:
O código completo poderá ser encontrado no github desse blog.
Veja abaixo o resultado de cada método do Web Service:
Interagindo com a API de configuração usando HTTP |
Conclusão
Vimos como essa nova especificação funciona e os conceitos básicos. Há pontos mais avançados a serem estudados, como o uso de Converter e uma fonte de propriedades customizável, mas vamos deixar isso mais para frente. No próximo post falamos sobre alguma das outras especificações parte do MicroProfile. Até mais!
Nenhum comentário:
Postar um comentário