zoukankan      html  css  js  c++  java
  • Java PropertiesLoader 工具类 开发者使用

    /**
     * Copyright (c) 2005-2011 springside.org.cn
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * 
     * $Id: PropertiesLoader.java 1690 2012-02-22 13:42:00Z calvinxiu $
     */
    package com.zltd.sto.common.utils;
    
    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优先.
     * @author calvin
     * @version 2013-01-15
     */
    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;
    		}
    		return properties.getProperty(key);
    	}
    
    	/**
    	 * 取出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;
    	}
    }
    


     

    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    常用命令
    添加云存储服务
    安装Prometheus-Opeartor
    Prometheus-operator架构详解
    Helm使用详解
    莫队乱搞--BZOJ2038: [2009国家集训队]小Z的袜子(hose)
    BZOJ1443: [JSOI2009]游戏Game
    BZOJ2006: [NOI2010]超级钢琴
    BZOJ4408: [Fjoi 2016]神秘数
    hdu6110:路径交
  • 原文地址:https://www.cnblogs.com/iplus/p/4464732.html
Copyright © 2011-2022 走看看