博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
载入Properties文件中的配置项信息
阅读量:5234 次
发布时间:2019-06-14

本文共 7333 字,大约阅读时间需要 24 分钟。

一、载入工具类

/** * 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 JeeSite 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
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; } }

 

转载于:https://www.cnblogs.com/kongweiteng/p/7610635.html

你可能感兴趣的文章
html之novalidate
查看>>
mysql数学函数
查看>>
S-HR之变动操作,变动原因,变动类型/离职操作,离职原因,离职类型
查看>>
拆分字符串
查看>>
jq的each和map遍历
查看>>
js--script和link中的 integrity 属性
查看>>
xss攻击
查看>>
HTML DOM querySelector() 方法
查看>>
??条件判断
查看>>
千万不要误以为1个server只允许连接65535个Client。记住,TCP连出受端口限制,连入仅受内存限制...
查看>>
novalidate
查看>>
label for标签的作用
查看>>
uml多重性
查看>>
fastjson @JsonField
查看>>
jvm配置
查看>>
重载类型运算符
查看>>
EasyUI学习-如何使用jQuery EasyUI?
查看>>
前端JS之HTML利用XMLHttpRequest()和FormData()进行大文件分段上传
查看>>
jQuery获取Select选择的Text和 Value
查看>>
hdu1525 Euclid's Game , 基础博弈
查看>>