存储Java UI应用程序配置/设置的最佳实践

时间:2011-12-06 21:51:23

标签: java xml json configuration preferences

我正在研究在支持层次结构和动态加载的同时存储应用程序配置数据的最佳方法是什么。

数据示例:

  • 在哪里找到每一列(我们会显示很多表)
  • 如何可视化每个列或单元格中的数据(例如,某些列可能有不同的方式来显示相同​​的指标)
  • 数据格式(日期或数字)

层次结构意味着:

我的州有多个区域,因此会有默认配置,但状态可以覆盖默认配置的部分(或全部),而分区可以覆盖部分状态配置。

动态加载表示:

无需重启服务器甚至用户登录即可动态加载和应用新配置。

配置存储格式(可以是文件或数据库):

  • XML - 这就是我过去使用的
  • JSON - 所以我可以从配置文件或数据库中读取JSON并将其作为应用程序内存中的对象
  • 键值对
  • 其他格式?

您对此主题有何看法?

谢谢!

3 个答案:

答案 0 :(得分: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等”。

答案 1 :(得分:0)

好吧,总有Java Preferences API。然后你不必担心这些事情。

附录:

受欢迎程度(或缺乏程度)可能源于这样一个事实,即开箱即用,首选项在整个系统或用户中是全局的。因此,应用程序等需要在Preferences树中创建自己的命名空间。人们更习惯于每个具有自己的属性文件并从那里开始的实例。

对于更复杂的结构,Preferences API是一种树结构,就像XML DOM一样。您找到了树中的节点,并在这些节点下方工作。因此,您可以在该表示之上对结构化数据进行分层。

API很老,就像java logging API一样旧。但是这个设计非常基础和有用,因此没有太多要求更新它。收藏框架也很陈旧,但我们每天都很开心(大部分)。

答案 2 :(得分:0)

我是名为Config4J的配置文件解析器库的维护者。根据您在问题中提供的详细信息,我认为Config4J不是100%适合您的需求。但是,其文档的某些部分可能会为您提供有用的灵感。

我建议您浏览一下“入门”手册的第2章和第3章,以获得足够的语法和API概述。然后阅读“实际使用”手册的第II部分(“配置驱动对象创建”)和第III部分(“Config4JMS案例研究”)。 Config4J website底部提供了所有手册的HTML和PDF版本的链接。