利用配置文件使用一些可配置的资源

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

 

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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值