在工作中,我们经常会使用这种方式。例如:我希望配置一些特殊的权限给系统中某个角色,但是有可能对权限再做维护,但不希望在程序里面写死 简单的实现这个功能
1. 先建一个配置文件
system_config.properties
内容很简单
#用户权限
ROLENAME=A,B,C,D
2.需要在系统启动时候加载这个配置文件(这里用PlugIn方式)
一、新建一个SystemResourceLoadPlugIn.java
package com.commom.plugins;
import javax.servlet.ServletException;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
import com.commom.service.SystemConfigLoadService;
/**
* 系统初始化时加载系统配置信息<br>
* Version:1.0<br>
*/
public class SystemResourceLoadPlugIn implements PlugIn {
private static final Logger logger=Logger.getLogger(SystemResourceLoadPlugIn.class);
public void destroy() {
}
/**
* 系统基础资源初始化方法<br>
* Version:1.0<br>
*
*/
public void init(ActionServlet arg0, ModuleConfig arg1) throws ServletException {
//获得文件路径
String realpath = arg0.getServletContext().getRealPath("");
//获得文件名称,文件名称是在配置PlugIn时候写进去的
String file = (String) arg1.findPlugInConfigs()[1].getProperties().get("system-config");
//创建一个文件处理对象
SystemConfigLoadService loadConfigService=new SystemConfigLoadService();
try {
//调用同一加载配置文件的方法
loadConfigService.loadSystemConfig(realpath+file);
} catch (Exception e) {
logger.error(e);
}
logger.warn("系统配置文件成功加载完成!");
}
}
二、同时编写文件处理的类 SystemConfigLoadService.java
package com.commom.service;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.log4j.Logger;
import com.netcast.zbnew.commom.Config;
import com.netcast.zbnew.util.StringUtils;
/**
* 系统配置信息加载 <br>
* Version:1.0<br>
*/
public class SystemConfigLoadService {
private static final Logger logger = Logger.getLogger(SystemConfigLoadService.class);
public static String CONFIG_FILE_NAME = null;
/**
* 加载系统配置信息<br>
* Version:1.0<br>
* @param fileName 配置文件路径
* @throws Exception
*/
public void loadSystemConfig(String fileName) throws Exception {
StringUtils utils=new StringUtils();
if(utils.isNotNullStr(fileName)){
SystemConfigLoadService.CONFIG_FILE_NAME=fileName;
}
//文件路径为空,抛出异常
if(utils.isNullStr(SystemConfigLoadService.CONFIG_FILE_NAME)){
logger.error("SystemConfigLoadService.loadSystemConfig(加载系统配置信息):[SystemConfigLoadServiceException]配置文件路径为NULL");
throw new Exception("配置文件路径为NULL");
}
try {
logger.info("初始化配置文件路径:" + SystemConfigLoadService.CONFIG_FILE_NAME);
InputStream is;
File f = new File(SystemConfigLoadService.CONFIG_FILE_NAME);
is = new java.io.FileInputStream(f);
//将配置文件里面的信息放到Config里面,之后就可以在系统任何地方调用
Config.SYS_CONFIG_INFO.load(is);
logger.info("系统配置信息加载完成");
} catch (IOException ex) {
logger.error("SystemConfigLoadService.loadSystemConfig(加载系统配置信息):[IOException]加载文件失败,"+ex.getMessage());
throw new Exception("加载文件失败,"+ex.getMessage(),ex);
}
}
}
三、编写Config类
package com.netcast.zbnew.commom;
import java.util.Properties;
/**
* 系统常量<br>
* Version:1.0<br>
*/
public class Config
{
/**
* 获取系统常量信息方法,例: Config.SYS_CONFIG_INFO.get(“ROLENAME”);
*/
// 系统常量配置信息
public static Properties SYS_CONFIG_INFO = new Properties();
}
3.配置PlugIn (如果有用struts框架 也可以在struts配置文件中配置plugIN)
<plug-in className="com.commom.plugin.SystemResourceLoadPlugIn">
<set-property property="system-config" value="/WEB- INF/classes/com/system_config.properties"/>
</plug-in>