zoukankan      html  css  js  c++  java
  • 161216、使用spring的DefaultResourceLoader自定义properties文件加载工具类

    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;

    /**

     * Properties文件载入工具类. 可载入多个properties文件, *相同的属性在最后载入的文件中的值将会覆盖之前的值,但以System的Property优先.

     */

    public class PropertiesLoader {

    private static Logger logger = LoggerFactory.getLogger(PropertiesLoader.class);

    private static ResourceLoader resourceLoader = new DefaultResourceLoader();

    private final Properties properties;

    public PropertiesLoader(String... resourcesPaths) {

    properties = loadProperties(resourcesPaths);

    }

    public Properties getProperties() {

    return properties;

    }

    /**

     * 取出Property,但以System的Property优先,取不到返回空字符串.

     */

    private String getValue(String key) {

    String systemProperty = System.getProperty(key);

    if (systemProperty != null) {

    return systemProperty;

    }

    if (properties.containsKey(key)) {

            return properties.getProperty(key);

        }

        return "";

    }

    /**

     * 取出String类型的Property,但以System的Property优先,如果都为Null则抛出异常.

     */

    public String getProperty(String key) {

    String value = getValue(key);

    if (value == null) {

    throw new NoSuchElementException();

    }

    return value;

    }

    /**

     * 取出String类型的Property,但以System的Property优先.如果都为Null则返回Default值.

     */

    public String getProperty(String key, String defaultValue) {

    String value = getValue(key);

    return value != null ? value : defaultValue;

    }

    /**

     * 取出Integer类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常.

     */

    public Integer getInteger(String key) {

    String value = getValue(key);

    if (value == null) {

    throw new NoSuchElementException();

    }

    return Integer.valueOf(value);

    }

    /**

     * 取出Integer类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常

     */

    public Integer getInteger(String key, Integer defaultValue) {

    String value = getValue(key);

    return value != null ? Integer.valueOf(value) : defaultValue;

    }

    /**

     * 取出Double类型的Property,但以System的Property优先.如果都为Null或内容错误则抛出异常.

     */

    public Double getDouble(String key) {

    String value = getValue(key);

    if (value == null) {

    throw new NoSuchElementException();

    }

    return Double.valueOf(value);

    }

    /**

     * 取出Double类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容错误则抛出异常

     */

    public Double getDouble(String key, Integer defaultValue) {

    String value = getValue(key);

    return value != null ? Double.valueOf(value) : defaultValue;

    }

    /**

     * 取出Boolean类型的Property,但以System的Property优先.如果都为Null抛出异常,如果内容不是true/false则返回false.

     */

    public Boolean getBoolean(String key) {

    String value = getValue(key);

    if (value == null) {

    throw new NoSuchElementException();

    }

    return Boolean.valueOf(value);

    }

    /**

     * 取出Boolean类型的Property,但以System的Property优先.如果都为Null则返回Default值,如果内容不为true/false则返回false.

     */

    public Boolean getBoolean(String key, boolean defaultValue) {

    String value = getValue(key);

    return value != null ? Boolean.valueOf(value) : defaultValue;

    }

    /**

     * 载入多个文件, 文件路径使用Spring Resource格式.

     */

    private Properties loadProperties(String... resourcesPaths) {

    Properties props = new Properties();

    for (String location : resourcesPaths) {

    logger.debug("Loading properties file from:" + 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;

    }

    }

  • 相关阅读:
    android watchdog 学习
    apt-get 使用详解
    study java uiautomator 0731
    关于测试人员的职业发展(转)
    双系统(win7+ubuntu)ubuntu磁盘空间不足时解决方法
    step of install xiaocong/uiautomator
    双系统(win7+ubuntu)ubuntu磁盘空间不足时解决方法
    关于Wubi安装增加容量以及移至真实分区的解决方法!使用LVPM软件
    android uiautomator + shell 网址
    Ubuntu中 JDK的安装和卸载
  • 原文地址:https://www.cnblogs.com/zrbfree/p/6230957.html
Copyright © 2011-2022 走看看