Conhecendo a JSR-382: Configuration API 1.0

Daniel Dias
Aug 12, 2018 · 6 min read
config
config

Introdução a JSR-382 ( JavaConfig )

A maioria das aplicações precisam ser configuradas com base em um ambiente em execução . Esse podem ser os números de portas, endpoint das extremidade Rest ou recursos inteiros que precisam ser ligados e desligados dependendo da instalação.

br.org.soujava.url.site=http://soujava.org.br

Gerando o Build e Criando o Projeto

Atualmente a JavaConfig ainda não tem uma RI (Implementação de Referencia) oficial, conforme pode ser visto na seguinte mensagem de um dos lideres da SPEC Mark Struberg para mim :

giiter
giiter
mvn clean install -DskipTests
git checkout ConfigJSR mvn clean install -DskipTests

Exemplos de uso de configuração

Uma aplicação pode obter sua configuração via programaticamente por meio do ConfigProvider e no CDI com beans habilitados para serem injetados via @Inject Config , com isso uma aplicação pode acessar seus valores configurados por meio dessa instancia de Config .

Simples exemplo programatico

para o primeiro exemplo vamos utilizar via programaticamente, para isso criar um arquivo properties com o seguinte nome : javaconfig.properties na pasta src/main/resources/META-INF com o seguinte conteúdo de chave/valor :

org.jug.nome=SouJava-Rio
org.jug.membros.quant=709
org.jug.reuniao.mes=1
org.jug.site.url=https://soujava-rio.github.io/
saida2
saida2

Simples exemplo com CDI

para isso, adicione o seguinte arquivo beans.xml na pasta src/main/resources/ com o seguinte conteúdo :

eclipse
eclipse
cdi
cdi

Conversor

Para fornecer uma configuração Type Safe, precisamos converter as String configuradas para um formato apropriado, isso a JavaConfig fornecer o um conversor para os seguinte tipos :

  • int e Integer
  • long e Long
  • float e Float, o “.” é usado para separar os dígitos fracionários.
  • double e Double, o “.” é usado para separar os dígitos fracionários.
  • URL

ConfigAccessor

A API do ConfigAccessor é destinada a valores de configuração digitados e controle preciso sobre a resolução .

@Inject
private Config config
String jugNome = config.access(“org.jug.nome”).getValue();

Referencias

Daniel Dias

Board Member da SouJava, membro da JCP, contribuidor das especificações JSR-371 ( MVC 1.0 ), JSR-382 ( Configuration 1.0 ) , Expert Group JSR-385 ( Units of Measurement 2.0 ) e Eclipse Committer , além de esta dando os primeiros passos nas contribuições de projetos Open Source

Daniel Dias

Written by

Board Member da SouJava, membro da JCP, contribuidor das especificações JSR-371 ( MVC 1.0 ), JSR-382 ( Config) e EG JSR-385 ( UoM) e Eclipse Committer

Daniel Dias

Board Member da SouJava, membro da JCP, contribuidor das especificações JSR-371 ( MVC 1.0 ), JSR-382 ( Configuration 1.0 ) , Expert Group JSR-385 ( Units of Measurement 2.0 ) e Eclipse Committer , além de esta dando os primeiros passos nas contribuições de projetos Open Source