2011-12-06 60 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的底部提供。