实时改变配置文件的思路

面对的问题:
                很多系统在运行的过程中有可能要改变配置文件,很多人(一开始我也是这么做的)在类中直接新建对象并从本地磁盘加载文件,例如:
               文件名为aa.properties

@Controller
public class bbGetter {
            @RequestMapping(value = "/query.do", produces = "application/json; charset=UTF-8")
             public String getResult(HttpServletResponse response){
                      //利用前面文章读properties和写properties文件
                       Loader  load = new Loader();
                       Map<String, String> bb = load.readPropertiesFile("aa");
                       cc = bb.get("dd");
                       ...........
            }
}


像上面这样写的弊端:
         <1>每次使用getResult()都要新建load对象,如果是多线程的调用就会造成内存的浪费
         <2>每次都去读磁盘中的文件,万一磁盘意外损坏会造成系统的故障




解决方案:
public class Loader {
             public Map<String, String> bb;
            public PropertiesLoader(){
                readPropertiesFile("aa");
           }
          public Map<String,String> readPropertiesFile(String fileName){
                   .....................................
          }



@Controller
public class bbGetter {
        Loader  load = new Loader();
        Map<String, String> bb = load.bb;


       @RequestMapping(value = "/query.do", produces = "application/json; charset=UTF-8")
       public String getResult(HttpServletResponse response){
                 //这里可以直接操作bb对象进行任何操作
                cc = bb.get("dd");
                 ...........
         }
         //当要改变bb中内容时只要刷新获取配置文件即可
       @RequestMapping(value = "/reload_properties.do", produces = "application/json; charset=UTF-8")
       public void reloadProperties(HttpServletResponse response)
     throws Exception{
               JSONObject json = new JSONObject();
               response.setContentType("application/json;charset=UTF-8");
                Loader  load = new Loader();
                bb = load.bb;
         String result = "成功重新导入Properties文件!!!";
         json.put("result", result);
                json.writeJSONString(response.getWriter());
         return;
       }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值