Lendo um properties mais recente em tempo de execução

Uma tarefa comum no desenvolvimento é a leitura de arquivos de configuração pela aplicação. A maioria das soluções lê o arquivo somente uma vez e carrega em memória, ou toda a vez que é chamado, ele carrega a leitura. Uma boa prática é ler somente o arquivo quando ele foi alterado. Dessa forma, quando houver uma alteração nesse arquivo conseguimos carregar os dados novos e quando não há alterações, não consumimos recursos.

Para fazer isso é só usar o método lastModified() da classe File, verificar se ele é o mais recente, se for, carregar o arquivo de properties. Segue o exemplo;

public class ConfigPropertiesUtil {

	private static long lastModifiedDate = -1;
	private static Properties properties = new Properties();

	public static Properties getProperties() throws IOException,
			FileNotFoundException {
		File configFile = new File("/diretorio/config.properties");
		if (configFile.lastModified() > lastModifiedDate) {
			properties.clear();
			properties.load(new FileInputStream(configFile));
			lastModifiedDate = configFile.lastModified();
		}
		return properties;
	}

}

Agora é só criar o arquivo de configuração e toda a vez que ele for atualizado e você chamar o método getProperties() ele irá recarregar o arquivo, caso contrário, ele utilizará a versão já em memória.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6