在工作中,我們經常會使用這種方式。例如:我希望配置一些特殊的權限給系統中某個角色,但是有可能對權限再做維護,但不希望在程序裡面寫死 簡單的實現這個功能
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>
摘自 xuliangwen的專欄