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