系统配置信息放到cfg文件中(相当于windows的ini文件), 我现在的做法是把cfg文件中的所有信息在系统启动时读进一个static 的class,(class内封装了各种属性), 因为这些系统属性是经常被用到的(同时使用的人有很多),所以我把它放到一个static object 中. 但我的另一个老同事说这种做法不好,说了一大堆线程同步问题,他不建议我这样做,他说,最好每次需要时都去读一次cfg文件. 但我简单算了一下,如果每次都读cfg文件取系统信息的话,1秒钟就会读超过百次),这样的做法更不可取,而且我也不认同这会有线程共享的问题,因这这些都是只读的信息,对外只有get接口.如果大家看一下jdk的System.java文件,你会发现java的系统属性都是定义成static的, 所有大家才会用System.out.xxx 用的那么爽.不知大家有什么看法?
但确实存在线程同步的问题,我认为这里的同步是指别的程序修改配置文件后应用程序不能马上做出反应,甚至是永远不能作出反应,除非重启应用程序。
其实你看看Weblogic的配置文件也一样,当config文件变动后,它也需要重新启动才能生效。
再看看JBuilder的jar载入配置,它也肯定是在JBuilder启动时按照config中的配置载入jar文件,如果程序启动后,要用到jar文件时,每次先读一遍config,再载入,那程序得累死。
那么放到static中是好的办法~
不会对你的性能,还是线程安全产生什么影响的。
我是放static object的,一次性读入
## Database Services
DBDRIVER=com.mysql.jdbc.Driver
DBSYSNAME=mysql
DBHOST=kenty
DBPORTID=3306
DBNAME=mailrelay
DBUSR=root