歡迎您光臨本站 註冊首頁

Java中配置信息的存取

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

我們經常需要將我們的程序運行中的一些信息(比如在選項對話框中的設置)記錄下來,以做便再次運行的時候不用再重寫填寫這些數據.

這對改善軟體的人機可用性方面是很有用的.

但是讓人失望的是,現在很多Java開源軟體在這一點做的很不好,每次運行都要用戶去填寫那些配置文件.

做為最好用的資料庫監控、日誌工具,JDBMonitor在這方面做的是非常好的,以它的Swing界面監視器和資料庫日誌記錄查詢窗口中所有的配置信息(例如遠程伺服器地址、埠、資料庫名稱、JDBC驅動等等)都是被保存的.

當再次運行的時候程序會自動載入這些配置信息,所以使用起來相當方便.

我們接下來就來分析一下JDBMonitor是如何實現的.

JDBMonitor的二進位jar包和源代碼都可以 http://www.cownew.com 下載得到.

保存載入配置文件有多種方式,比如xml文件、properties文件等,採用這些保存方式的一個問題就是如果程序是以jar,war 包等方式發布的那麼這些配置文件就不能放在包中.

包中的文件是不能在運行時改動的,只能放在磁碟的文件中,但是放在磁碟的文件中又很容易出現操作系統的差異、許可權等問題造成程序的問題.

JDBMonitor採用的則是JDK中的Preferences類來避免這些問題.

JDK1.4中提供了Preferences類,在java.util.prefs包裡面.Preferences類在不同的平台中有不同的實現方式.

比如在Windows平台中,Preferences是將數據保存在註冊表中的.

為了區分不同的應用程序的參數項,在建立Preferences時要指定一個節點路徑.

Preferences是一個抽象類,提供了一系列靜態方法和抽象方法來操作參數項:

Preferences userData = Preferences.userNodeForPackage(this); //得到用戶配置節點

Preferences sysData = Preferences.systemNodeForPackage(this); //得到系統配置節點.

比如在windows中Preferences.userNodeForPackage代表得到 HKEY_CURRENT_USERSoftwareJavaSoftPrefs下的相對路徑

Preferences.systemNodeForPackage代表得到 HKEY_LOCAL_MACHINESOFTWAREJavaSoftPrefs下的相對路徑

Preferences的讀取、存儲是非常容易的,存儲只要調用put***方法就可以,讀取調用get***即可,不同的put,get方法分別用於存取不同的數據類型,詳細信息可以參考JavaDoc.

以JDBMonitor的Swing界面監視器的連接對話框為例為大家分析,打開com.cownew.JDBMonitor.listenerImpl.sckListenerClient.ConnectConfigDialog,saveConfig()和loadConfig()分別就是保存和讀取參數用了.

這兩個方法會在超類中被調用.可以看到代碼實現非常簡單:

protected void saveConfig()
{
Preferences prefer = Preferences.userNodeForPackage(getClass());
prefer.put(HOST_NAME,getHostName());
prefer.putInt(PORT,getPort());
}
protected void loadConfig()
{
Preferences prefer = Preferences.userNodeForPackage(getClass());
setHostName(prefer.get(HOST_NAME,""));
setPort(prefer.getInt(PORT,9527));
}


[火星人 ] Java中配置信息的存取已經有511次圍觀

http://coctec.com/docs/java/show-post-61036.html