• 载入Properties文件中的配置项信息


    一、载入工具类

    /**
     * Copyright (c) 2005-2011 springside.org.cn
     * 
     * $Id: PropertiesLoader.java 1690 2012-02-22 13:42:00Z calvinxiu $
     */
    package com.thinkgem.jeesite.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-05-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;
    		}
    		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;
    	}
    }
    

     二、获取配置文件信息工具

    /**
     * Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
     */
    package com.thinkgem.jeesite.common.config;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Map;
    
    import org.springframework.core.io.DefaultResourceLoader;
    
    import com.ckfinder.connector.ServletContextFactory;
    import com.google.common.collect.Maps;
    import com.thinkgem.jeesite.common.utils.PropertiesLoader;
    import com.thinkgem.jeesite.common.utils.StringUtils;
    
    /**
     * 全局配置类
     * @author ThinkGem
     * @version 2014-06-25
     */
    public class Global {
    
    	/**
    	 * 当前对象实例
    	 */
    	private static Global global = new Global();
    	
    	/**
    	 * 保存全局属性值
    	 */
    	private static Map<String, String> map = Maps.newHashMap();
    	
    	/**
    	 * 属性文件加载对象
    	 */
    	private static PropertiesLoader loader = new PropertiesLoader("jeesite.properties");
    
    	/**
    	 * 显示/隐藏
    	 */
    	public static final String SHOW = "1";
    	public static final String HIDE = "0";
    
    	/**
    	 * 是/否
    	 */
    	public static final String YES = "1";
    	public static final String NO = "0";
    	
    	/**
    	 * 对/错
    	 */
    	public static final String TRUE = "true";
    	public static final String FALSE = "false";
    	
    	/**
    	 * 上传文件基础虚拟路径
    	 */
    	public static final String USERFILES_BASE_URL = "/userfiles/";
    	
    	/**
    	 * 获取当前对象实例
    	 */
    	public static Global getInstance() {
    		return global;
    	}
    	
    	/**
    	 * 获取配置
    	 * @see ${fns:getConfig('adminPath')}
    	 */
    	public static String getConfig(String key) {
    		String value = map.get(key);
    		if (value == null){
    			value = loader.getProperty(key);
    			map.put(key, value != null ? value : StringUtils.EMPTY);
    		}
    		return value;
    	}
    	
    	/**
    	 * 获取管理端根路径
    	 */
    	public static String getAdminPath() {
    		return getConfig("adminPath");
    	}
    	
    	/**
    	 * 获取前端根路径
    	 */
    	public static String getFrontPath() {
    		return getConfig("frontPath");
    	}
    	
    	/**
    	 * 获取URL后缀
    	 */
    	public static String getUrlSuffix() {
    		return getConfig("urlSuffix");
    	}
    	
    	/**
    	 * 是否是演示模式,演示模式下不能修改用户、角色、密码、菜单、授权
    	 */
    	public static Boolean isDemoMode() {
    		String dm = getConfig("demoMode");
    		return "true".equals(dm) || "1".equals(dm);
    	}
    	
    	/**
    	 * 在修改系统用户和角色时是否同步到Activiti
    	 */
    	public static Boolean isSynActivitiIndetity() {
    		String dm = getConfig("activiti.isSynActivitiIndetity");
    		return "true".equals(dm) || "1".equals(dm);
    	}
        
    	/**
    	 * 页面获取常量
    	 * @see ${fns:getConst('YES')}
    	 */
    	public static Object getConst(String field) {
    		try {
    			return Global.class.getField(field).get(null);
    		} catch (Exception e) {
    			// 异常代表无配置,这里什么也不做
    		}
    		return null;
    	}
    
    	/**
    	 * 获取上传文件的根目录
    	 * @return
    	 */
    	public static String getUserfilesBaseDir() {
    		String dir = getConfig("userfiles.basedir");
    		if (StringUtils.isBlank(dir)){
    			try {
    				dir = ServletContextFactory.getServletContext().getRealPath("/");
    			} catch (Exception e) {
    				return "";
    			}
    		}
    		if(!dir.endsWith("/")) {
    			dir += "/";
    		}
    //		System.out.println("userfiles.basedir: " + dir);
    		return dir;
    	}
    	
        /**
         * 获取工程路径
         * @return
         */
        public static String getProjectPath(){
        	// 如果配置了工程路径,则直接返回,否则自动获取。
    		String projectPath = Global.getConfig("projectPath");
    		if (StringUtils.isNotBlank(projectPath)){
    			return projectPath;
    		}
    		try {
    			File file = new DefaultResourceLoader().getResource("").getFile();
    			if (file != null){
    				while(true){
    					File f = new File(file.getPath() + File.separator + "src" + File.separator + "main");
    					if (f == null || f.exists()){
    						break;
    					}
    					if (file.getParentFile() != null){
    						file = file.getParentFile();
    					}else{
    						break;
    					}
    				}
    				projectPath = file.toString();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return projectPath;
        }
    	
    }
    
  • 相关阅读:
    博客第一天
    页码始终下沉
    让作为背景图片的图片显示,上面的文字消失
    select清除原来样式
    文章查看更多时的文字变淡效果
    ul去除项目符号并删除其所占空间
    添加下划线的两种方法
    js之数组操作
    js之argument小解
    腾讯云服务器搭建
  • 原文地址:https://www.cnblogs.com/kongweiteng/p/7610635.html
Copyright © 2020-2023  润新知