利用配置文件使用一些可配置的資源 – JAVA編程語言程序開發技術文章

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

 

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的專欄

發佈留言