Quem trabalha com desenvolvimento Java certamente já teve contato e/ou vez ou outra teve que configurar arquivos com a extensão .properties. Esses arquivos são muito uteis quando precisamos configurar propriedades de algum sistema de forma que não seja via banco e nem fique preso as classes Java. Quando um arquivo .properties é lido por classes Java as informações são armazenadas em um mapa de chave e valor. Dessa forma precisamos apenas jogar esses valores em algum a variável e fazermos o que bem entendermos com ela.
Numa classe de envio de emails por exemplo poderíamos armazenar alguns dados em arquivos properties como no exemplo abaixo:
//Trecho do nosso arquivo de propriedades smtp=smtp.gmail.com porta=587 ssl=true
A classe java abaixo é responsável por ler esse arquivo .properties
package br.com.semeru.util; import java.io.File; import java.io.FileInputStream; import java.util.Properties; import javax.faces.context.FacesContext; public class PropertiesLoader { //Crio uma instancia da classe properties private static Properties prop = new Properties(); //Crio um método estático que pode ser acessado por outras classes da aplicação sem a necessidade de instanciar public static Properties propertiesLoader() { //Informo o caminho onde se encontra meu arquivo properties de forma dinâmica //Poderia fazer isso de forma estática passando o diretório completo mas obviamente isso não é muito interessante. String atualDir = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/") +"WEB-INF/classes/nome_do_arquivo.properties"; try { //Tento recuperar as informações do arquivo de propriedades //Apenas para testar imprimo o diretório atual do meu arquivo properties System.out.println(atualDir); //Crio uma instância de File passando o meu arquivo .properties via construtor File file = new File(atualDir); //Agora crio uma instância de FileInputStream passando via construtor o objeto file instanciado acima FileInputStream fileInputStream = new FileInputStream(file); //Leio o fileInputStream recuperando assim o mapa contendo chaves e valores prop.load(fileInputStream); //Fecho o fileInputStream fileInputStream.close(); } catch (Exception e) { //Trato possíveis exceções } return prop; //Retorno um objeto prop com o mapa correspondente ao meu arquivo properties } }
Aqui acessamos as propriedades lidas do arquivo em outra classe da aplicação.
/*Agora de qualquer classe que possa importar a PropertiesLoader podemos recuperar as informações do .properties apenas passando a chave você receberá o valor. Depois basta converter os resultados da forma que mais lhe convier. Para recuperar dados do tipo boolean podemos fazer assim Boolean.parseBoolean(), Integer com um Integer.parseInt(), já uma informação do tipo String basta apenas um .toString() */ smtp = PropertiesLoader.propertiesLoader().getProperty("smtp").toString(); porta = Integer.parseInt(PropertiesLoader.propertiesLoader().getProperty("porta")); ssl = Boolean.parseBoolean(PropertiesLoader.propertiesLoader().getProperty("ssl"));
Bom pessoal como podem ver é muito simples ler configurações em arquivos properties. Qualquer dúvida, postem aí.
Treinamentos relacionados com este post