频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
利用配置文件使用一些可配置的资源
2012-01-04 14:09:36           
收藏   我要投稿

  在工作中,我们经常会使用这种方式。例如:我希望配置一些特殊的权限给系统中某个角色,但是有可能对权限再做维护,但不希望在程序里面写死 简单的实现这个功能

 

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的专栏
点击复制链接 与好友分享!回本站首页
相关TAG标签 文件 资源
上一篇:用JAVA代码来导出EXCEL
下一篇:模糊查询——忽略大小写小技巧
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站