= MicroProfile Config
:index-group: MicroProfile
:jbake-type: page
:jbake-status: published

Este é um examplo de como usar o microprofile config no TomEE.

== Rodando a aplicação:

[source,bash]
----
mvn clean install tomee:run 
----

== API

Na aplicação existem 3 formas de injetar valores usando config 

1 . Para o ConfigProperty com valor padrão chamar:

----
GET http://localhost:8080/mp-config-example/sample/defaultProperty
----

2 . Para pegar propriedade injetada com ConfigProperty chamar:

----
GET http://localhost:8080/mp-config-example/sample/injectedJavaVersion
----

3 . Para pegar a propriedade do Config com getValue chamar:

----
GET http://localhost:8080/mp-config-example/sample/javaVersion
----

== Características de Config


MicroProfile Config é uma solução para externalizar configurações de microsserviços.
Cada propriedade individual pode ser injetada diretamente

[source,java,numbered]
----
@Inject
@ConfigProperty(name = "java.runtime.version")
private String javaVersion;
----

Você pode também inserir um valor padrão para ele, caso o config não encontre a propriedade no contexto ele irá usar o valor padrão

[source,java,numbered]
----
@Inject
@ConfigProperty(name = "defaultProperty", defaultValue = "ALOHA")
private String defaultProperty;
----

O objeto config também pode ser injetado. Então use o método getValue() para recuperar a propriedade individual. 

[source,java,numbered]
----    
@Inject
private Config config;

@GET
@Path("javaVersion")
public String getJavaVersionPropertyFromSystemProperties() {
    return config.getValue("java.runtime.version", String.class);
}
----
