使用
private static PropertiesLoader props = null;
static {
props = new PropertiesLoader("classpath:/application.properties");
}
PropertiesLoader.java
import java.io.IOException;
import java.io.InputStream;
import java.util.NoSuchElementException;
import java.util.Properties;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
public class PropertiesLoader
{
private static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class);
private static ResourceLoader resourceLoader = new DefaultResourceLoader();
private final Properties properties;
public PropertiesLoader(final String... resourcesPaths)
{
properties = loadProperties(resourcesPaths);
}
public Properties getProperties()
{
return properties;
}
private String getValue(final String key)
{
String systemProperty = System.getProperty(key);
// allow EMPTY system variables be overridden
if ((systemProperty != null) && (systemProperty.length() > 0))
{
return systemProperty;
}
return properties.getProperty(key);
}
public String getProperty(final String key)
{
String value = getValue(key);
if (value == null)
{
throw new NoSuchElementException();
}
return value;
}
public String getProperty(final String key, final String defaultValue)
{
String value = getValue(key);
return value != null ? value : defaultValue;
}
public Integer getInteger(final String key)
{
String value = getValue(key);
if (value == null)
{
throw new NoSuchElementException();
}
return Integer.valueOf(value);
}
public Integer getInteger(final String key, final Integer defaultValue)
{
String value = getValue(key);
return value != null ? Integer.valueOf(value) : defaultValue;
}
public Double getDouble(final String key)
{
String value = getValue(key);
if (value == null)
{
throw new NoSuchElementException();
}
return Double.valueOf(value);
}
public Double getDouble(final String key, final Integer defaultValue)
{
String value = getValue(key);
return value != null ? Double.valueOf(value) : defaultValue;
}
public Boolean getBoolean(final String key)
{
String value = getValue(key);
if (value == null)
{
throw new NoSuchElementException();
}
return Boolean.valueOf(value);
}
public Boolean getBoolean(final String key, final boolean defaultValue)
{
String value = getValue(key);
return value != null ? Boolean.valueOf(value) : defaultValue;
}
private Properties loadProperties(final String... resourcesPaths)
{
Properties props = new Properties();
for (String location : resourcesPaths)
{
logger.debug("Loading properties file from path:{}", location);
InputStream is = null;
try
{
Resource resource = resourceLoader.getResource(location);
is = resource.getInputStream();
props.load(is);
}
catch (IOException ex)
{
logger.info("Could not load properties from path:{}, {} ", location, ex.getMessage());
}
finally
{
IOUtils.closeQuietly(is);
}
}
return props;
}
}