Há uns meses atrás fomos os primeiros a falar sobre Quarkus em português. Passou um tempo e Quarkus se confirmou com a ferramenta que está revolucionando o desenvolvimento Java para microservices e outras aplicações.
Aqui vão alguns recursos em português para quem quiser se aprofundar nessa tecnologia maravilhosa que é o Quarkus
Aprenda Quarkus em Português
Há um vídeo que fizemos uns meses atrás, você pode assistir para ter uma ideia do que é a plataforma, mas muitas coisas foram melhoradas;
Recentemente o autor desse blog fez um mini-curso sobre Quarkus, os slides podem ser vistos abaixo
Há uma série de vídeos online sobre Quarkus - não verificamos todo o conteúdo, mas parece cobrir todos os tópicos importantes com o nível de detalhes necessário
Aprenda Quarkus em Inglês
Já há infinitos recursos em inglês. Entre eles destacamos o próprio site quarkus.io, que contém guias de todas as extensões. Há também o famoso cheat sheet, um guia rápido de como fazer qualquer coisa com Quarkus. O youtube está sendo atualizado semanalmente com conteúdo sobre quarkus. Busquem Quarkus no youtube e sejam felizes!
Aprenda aqui
Em breve teremos uma série de tutoriais rápidos, como fizemos com Java EE, faremos com Quarkus - então fiquem ligados!
Semana passada a comunidade JBoss anunciou o projeto Quarks.io. O site irá te ajudar a entender tudo que essa novo projeto oferece, em resumo você pode entender que ele ajuda a construir a nova geração de aplicações Java para as nuvens, facilitando a execução de aplicações em plataformas como o Kubernetes.
Para explorar essa plataforma hoje fizemos uma transmissão com o JUG Vale onde mostramos a plataforma e criamos uma aplicação de exemplo.
Para acessar propriedades hoje precisamos criar nosso próprio meio usando propriedades do sistema ou criar Producer CDI para ler um arquivo ou outra fonte. O MicroProfile Config facilita o acesso a configurações e cria um padrão para ser usado em aplicações que seguem a especificação MicroProfile ou mesmo qualquer aplicação Java. Vamos mostrar nesse breve artigo como funciona.
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 arquivoMETA-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:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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!