日期:2014-05-20  浏览次数:20631 次

[讨论]把系统配置内容放到一个static ojbect,大家讨论一下这样好不好?
系统配置信息放到cfg文件中(相当于windows的ini文件),   我现在的做法是把cfg文件中的所有信息在系统启动时读进一个static   的class,(class内封装了各种属性),     因为这些系统属性是经常被用到的(同时使用的人有很多),所以我把它放到一个static   object   中.  

但我的另一个老同事说这种做法不好,说了一大堆线程同步问题,他不建议我这样做,他说,最好每次需要时都去读一次cfg文件.   但我简单算了一下,如果每次都读cfg文件取系统信息的话,1秒钟就会读超过百次),这样的做法更不可取,而且我也不认同这会有线程共享的问题,因这这些都是只读的信息,对外只有get接口.

如果大家看一下jdk的System.java文件,你会发现java的系统属性都是定义成static的,   所有大家才会用System.out.xxx   用的那么爽.

不知大家有什么看法?

------解决方案--------------------
这个问题我也有遇到,我是把它放在static中处理的
但确实存在线程同步的问题,我认为这里的同步是指别的程序修改配置文件后应用程序不能马上做出反应,甚至是永远不能作出反应,除非重启应用程序。
其实你看看Weblogic的配置文件也一样,当config文件变动后,它也需要重新启动才能生效。
再看看JBuilder的jar载入配置,它也肯定是在JBuilder启动时按照config中的配置载入jar文件,如果程序启动后,要用到jar文件时,每次先读一遍config,再载入,那程序得累死。

------解决方案--------------------
内容要经常更新/改变的文件,不要放在static中~

如果文件的内容相对固定不需要经常改动,
那么放到static中是好的办法~
------解决方案--------------------
请问为啥经常变动的东西就不能放在static中?

是不是static,要看你的需求,这个是对象关系的问题。
不会对你的性能,还是线程安全产生什么影响的。

------解决方案--------------------
个人意见不是常量就别放。不绝对阿
------解决方案--------------------
哈哈,又看见lzheng2001(1加1) 了
我是放static object的,一次性读入
------解决方案--------------------
如果程序启动后不再修改配置文件,还是一次载入好
------解决方案--------------------
既然是配置文件
就肯定有改动
只是改动频率有快有慢