2011-12-06 61 views
0

我正在研究什麼是存儲應用程序配置數據同時支持層次結構和動態加載的最佳方式。存儲Java UI應用程序配置/設置的最佳實踐

數據的例子:

  • 何處定位每個柱(我們將顯示很多的表)
  • 如何可視化中的每一列或單元數據(例如一些列可以有不同的方式表現出同樣的度量)
  • 數據格式(日期或數字)

層次是指:

我有一個狀態有幾個區域,所以會有默認配置,但是狀態可以覆蓋默認配置的部分(或全部),並且分區可以覆蓋部分狀態配置。

動態加載表示:

能夠動態地加載並且不需要重新啓動服務器,甚至用戶登錄應用新的配置。

配置存儲格式(可以是文件或DB):

  • XML - 這是我用過去
  • JSON的 - 這樣我就可以從一個配置文件或數據庫中讀取JSON和將它作爲應用程序內存中的對象
  • 鍵值對
  • 其他格式?

您對此主題有什麼想法/知識?

謝謝!

+0

Java有一個'Properties'類,用於讀入和寫出一組鍵/值對。就我所見,這是處理任意一組配置值的標準。它甚至可以讓你構造Properties對象的鏈/樹,所以你可以在父類中擁有一個子類覆蓋的默認值。 – cHao

+0

http://stackoverflow.com/questions/12144/application-configuration-files – zmf

回答

0

那麼,總是有Java Preferences API。那麼你不必擔心這些事情。

附錄:

普及(或缺乏)的事實,,開箱,偏好是整個系統或用戶可能全球幹。因此,應用程序等需要在首選項樹中創建自己的名稱空間。人們更習慣於每個具有自己的屬性文件並從那裏出發的實例。

至於更復雜的結構,Preferences API是一個樹結構,就像一個XML DOM。您在樹中找到節點並在這些節點下工作。因此,您可以將結構化數據分層顯示。

API很舊,很像java日誌API是舊的。但是這個設計是非常基礎和有用的,所以沒有太多需要更新的設計。收藏框架也很古老,但我們每天都以愉快(大部分)的方式生活。

+0

我檢查了Java的偏好設置,但是我在網上找到的所有東西看起來都非常老舊 - 難道沒有多少使用它?另外,我可以做比鍵值對更復雜的事情嗎? – chibban

+0

屬性也是_somewhat_分層。但有點尷尬。 – user949300

+0

但層次結構更直接,而不是API的直接支持的第一類概念。 –

2

很久以前,我寫了一些類似的東西。它並不打算分層。它依靠每個具有獨特合理名稱的組件。這是在XML和JSON流行之前,所以我只使用了Properties。從本質上講,你從頂層窗口開始,看看它的所有組件,並根據它的類型(很多instanceofs)調用一個方法(現在你可以給它一個像Marshaller這樣的發燒友名字: ))寫出用戶可能更改並希望恢復的相關信息。遞歸地應用。你會得到像這樣的東西:

MainFrame.background=#FFFFFF 
MainFrame.bounds=200,100,400,500 
... 
MainFrame.Divider.x=122 
... 
MainFrame.DataPanel.DataTable.Columns.1.x=423 
MainFrame.DataPanel.DataTable.Columns.1.width=22 
MainFrame.DataPanel.DataTable.Columns.1.sortedby=Name 

你可能會這樣做是分層的,但現在它可能會更好地使用XML或JSON。但基本概念可能適用。你可以使用DIP或其他東西來確定合適的Marshaller。

也許這會給你一些想法。也許沒有一個標準的方式。我很驚訝,沒有人迴應「哦是的,使用Apache這個或Guava或JGoodies」等。

+0

+1:我看到這種技術大約在20年前用X Window系統構建GUI應用程序。每個組件級別都有兩個屬性('type'和'children'),用於指定組件的類型和子組件的列表(表示爲嵌套屬性)。這兩個屬性的結合使得簡單的遞歸算法可以爲應用程序創建GUI組件的整個層次結構。因此,在你的例子中,會有'MainFrame.type = ...'(任何類實現應用程序的主框架)和'MainFrame.children = Divider,DataPanel'。 –

0

我是一個配置文件分析器庫的維護者,名爲Config4J。根據您在問題中提供的細節,我不認爲Config4J是100%適合您的需求。但是,其文檔的某些部分可能會爲您提供有用的啓發。

我建議您閱讀「入門」手冊的第2章和第3章,以獲得足夠好的語法和API概述。然後閱讀「實用法」手冊的第II部分(「配置驅動的對象創建」)和第III部分(「Config4JMS案例研究」)。鏈接到所有手冊的HTML和PDF版本都在Config4J website的底部提供。