最近开一个系统的源代码,它里面就是将整个系统中需要使用到的静态属性全部放入到属性文件,再通过一个叫EopString类中的静态代码块来获取文件中的值,只要一调用该类,就会读取文件中的所有属性。
在这个类中还使用了其他两个封装类FileUtil和StringUtil,顾名思义,这两个类的作业,一个是对文件操作的类,一个是对字符串操作的类
在FileUtil中,这里我值使用读取资源文件并获取InputStream对象的方法,所以只抽取这个方法,其他没有用到就不用写出来了,StringUtil中也是一样,只使用到验证字符串是不是空字符串的方法
FileUtil类
package com.enation.framework.util;
import java.io.InputStream;
/**
* 文件工具类
* @author xiaohu
*
*/
public class FileUtil {
private FileUtil(){}
/**
* 获取文件InputStream对象
* @param resource 资源名
* @return
*/
public static InputStream getResourceAsStream(String resource){
String strippad=resource.startsWith("/")?resource.substring(1):resource;
//获取ClassLo
ClassLoader loader=Thread.currentThread().getContextClassLoader();
if(null!=loader){
//获取并返回InputStream对象
return loader.getResourceAsStream(strippad);
}
return null;
}
}
StringUtil类
package com.enation.framework.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 字符串工具类
* @author xiaohu
*
*/
public class StringUtil {
/**
* 验证字符串是否为空
* @param str
* @return
*/
public static boolean isEmpty(String str){
if(null==str||str.equals(""))
return true;
String pattern="\\S";
//创建 Pattern对象
Pattern p=Pattern.compile(pattern, 2|Pattern.DOTALL);
//获取Matcher
Matcher m=p.matcher(str);
return !m.find();
}
}
EopSetting类
package com.enation.eop.sdk.context;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import com.enation.framework.util.FileUtil;
import com.enation.framework.util.StringUtil;
/**
* 初始化属性
*
* @author xiaohu
*
*/
public class EopSetting {
// 上下文路径
public static String EOP_PATH = "/javashop";
//产品id
public static String PRODUCTID="";
//服务器域名
public static String DOMAIN_SERVICE="";
//图片服务器域名
public static String DOMAIN_IMAGESERVER="";
//模版引擎
public static String TEMPLATEENGIN="no";
//资源模式
public static String RESOURCEMODE="1";
//版本
public static String VERSION="";
//服务器图片路径
public static String IMAGESERVER_PATH="";
//压缩图的创建模式
public static String THUMBNATILCREATOR="javap_w_picpathio";
//产品仓库
public static String STORAGE_PRODUCTS="";
//EOP服务器仓库
public static String STORAGE_EOPSERVER="";
//后缀名
public static String EXTENSION="do";
//数据库类型
public static String DBTYPE="1";
//应用该数据仓库
public static String APP_DATA_STORAGE="";
//编码方式
public static String ENCODING="";
//运行模式
public static String RUNMODE="1";
static{
try {
//根据资源名获取InputStream对象
InputStream inStream=FileUtil.getResourceAsStream("eop.properties");
//创建属性对象
Properties pro=new Properties();
//加载资源流
pro.load(inStream);
//初始化
init(pro);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 初始化属性
*/
private static void init(Properties pro){
//获取Encoding属性
String encoding=pro.getProperty("encoding");
//设置ENCODING
ENCODING=StringUtil.isEmpty(encoding)?ENCODING:encoding;
String context_path=pro.getProperty("path.context_path");
EOP_PATH=StringUtil.isEmpty(context_path)?EOP_PATH:context_path;
String app_data=pro.getProperty("storage.app_data");
APP_DATA_STORAGE=StringUtil.isEmpty(app_data)?APP_DATA_STORAGE:app_data;
String dbtype=pro.getProperty("dbtype");
DBTYPE=StringUtil.isEmpty(dbtype)?DBTYPE:dbtype;
String extension=pro.getProperty("extension");
EXTENSION=StringUtil.isEmpty(extension)?EXTENSION:extension;
String eop_server=pro.getProperty("storage.EOPServer");
STORAGE_EOPSERVER=StringUtil.isEmpty(eop_server)?STORAGE_EOPSERVER:eop_server;
String products=pro.getProperty("storage.products");
STORAGE_PRODUCTS=StringUtil.isEmpty(products)?STORAGE_PRODUCTS:products;
String thumbnailcreator=pro.getProperty("thumbnailcreator");
THUMBNATILCREATOR=StringUtil.isEmpty(thumbnailcreator)?THUMBNATILCREATOR:thumbnailcreator;
String productid=pro.getProperty("productid");
PRODUCTID=StringUtil.isEmpty(productid)?PRODUCTID:productid;
String domain_service=pro.getProperty("domain.service");
DOMAIN_SERVICE=StringUtil.isEmpty(domain_service)?DOMAIN_SERVICE:domain_service;
String domain_p_w_picpathserver=pro.getProperty("domain.p_w_picpathserver");
DOMAIN_IMAGESERVER=StringUtil.isEmpty(domain_p_w_picpathserver)?DOMAIN_IMAGESERVER:domain_p_w_picpathserver;
String templateengine=pro.getProperty("templateengine");
TEMPLATEENGIN=StringUtil.isEmpty(templateengine)?TEMPLATEENGIN:templateengine;
String resourcemode=pro.getProperty("resourcemode");
RESOURCEMODE=StringUtil.isEmpty(resourcemode)?RESOURCEMODE:resourcemode;
String version=pro.getProperty("version");
VERSION=StringUtil.isEmpty(version)?VERSION:version;
String runmode=pro.getProperty("runmode");
RUNMODE=StringUtil.isEmpty(runmode)?RUNMODE:runmode;
String p_w_picpathserver_path=pro.getProperty("path.p_w_picpathserver");
IMAGESERVER_PATH=StringUtil.isEmpty(p_w_picpathserver_path)?IMAGESERVER_PATH:p_w_picpathserver_path;
}
}
属性文件:eop.properties
path.context_path=/javamall
productid=javamall
domain.service=http\://service.enationsoft.com/update
domain.p_w_picpathserver=http\://192.168.1.19\:8080/javamall/statics
templateengine=on
resourcemode=1
version=2.4.0
runmode=1
path.p_w_picpathserver=E\:/apache-tomcat-6.0.32/webapps/javamall/statics
thumbnailcreator=javap_w_picpathio
storage.products=E\:/apache-tomcat-6.0.32/webapps/javamall/products
storage.EOPServer=E\:/apache-tomcat-6.0.32/webapps/javamall
extension=do
dbtype=1
storage.app_data=E\:/apache-tomcat-6.0.32/webapps/javamall/products/commons
测试,在测试类中直接调用
package com.enation.test;
import com.enation.eop.sdk.context.EopSetting;
public class PropertiesTest {
public static void main(String[] args) {
System.out.println("应用数据仓库:"+EopSetting.APP_DATA_STORAGE); }
}
测试结果:
应用数据仓库:E:/apache-tomcat-6.0.32/webapps/javamall/products/commons