miércoles, mayo 15, 2013

Archivo de configuración en Java similar al App.config de .NET

Luego de replicar mi helper de Sql en Java, el siguiente paso fue utilizar un archivo externo de configuración para guardar el "ConnectionString".

Cómo lo hacemos en .NET


En .NET se encuentra integrado a Visual Studio. En un proyecto de consola simplemente agregamos un "Application Configuration File" que nombra como App.config. Este archivo se renombrará a "NombreDeEjecutable.config" al momento de compilar.

Para leerlo, usamos los métodos estáticos de la clase ConfigurationManager.

Cómo hacer algo similar en Java


Java tiene un objeto llamado "Properties" que gestiona objetos para guardar configuraciones y contiene métodos de escritura y lectura a disco.

Usé este objeto para crear mi helper llamado (obviamente) ConfigurationManager. Lo implementé cómo singleton de modo que la primera vez que lo invocamos lee las configuraciones desde disco y luego revisa todo desde memoria.

Este es el código que agregué a mi librería de helpers:

package ar.com.bdamian.configuration;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;

public class ConfigurationManager {

private static Properties p = null;

private static Properties getInstance() {
if (p==null) {
p = new Properties();
try {
p.load(new FileInputStream("config.properties"));
} catch (IOException ex) {}
}
return p;
}

public static String getAppSetting(String appSetting) {
Properties prop = getInstance();
return prop.getProperty(appSetting);
}
}

Luego, para usarlo en un proyecto hay que agregar un archivo de texto llamado "config.properties" a nivel de la carpeta del proyecto conteniendo los datos necesarios.


En mi ejemplo fue un ConnectionString:
connectionString=jdbc\:sqlserver\://localhost\\SQLEXPRESS\:1433;DatabaseName\=Northwind;user\=usuario;Password\=password

Por ultimo, lo llamamos para obtener la configuración de esta forma:
String connString = ConfigurationManager.getAppSetting("connectionString");

No se si esta es la mejor forma, pero como vengo de C# .NET, me resulta cómodo hacerlo así.

1 comentario:

Rocio dijo...

Yo creo que para que hoy en dia pueda programar debí haber aprendido muy bien matemática ya que tiene una relación muy directa ambas materias. El hecho de haber podido aprender logaritmos y distintos temas matemáticos me hizo hoy en día poder convertirme en una gran programadora