[英]What is the best practice to store configuration settings in a desktop application?
[英]Best practice of storing Java UI application configuration/settings
我正在研究在支持层次结构和动态加载的同时存储应用程序配置数据的最佳方法是什么。
数据示例:
层次结构意味着:
我有一个具有多个区域的州,因此将有默认配置,但状态可以覆盖默认配置的部分(或全部),并且分区可以覆盖部分状态配置。
动态加载意味着:
无需重启服务器甚至用户登录即可动态加载和应用新配置。
配置存储格式 (可以是文件或DB):
您对此主题有何看法?
谢谢!
很久以前我写了类似的东西。 它不是分层的。 它依赖于每个具有唯一合理名称的组件。 这是在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”等。
好吧,总有Java Preferences API 。 然后你不必担心这些事情。
附加物:
流行(或缺乏)可能源于这样一个事实,即开箱即用,首选项在整个系统或用户中是全局的。 因此,应用程序等需要在Preferences树中创建自己的命名空间。 人们更习惯于每个具有自己的属性文件并从那里开始的实例。
对于更复杂的结构,Preferences API是一种树结构,就像XML DOM一样。 您找到了树中的节点,并在这些节点下方工作。 因此,您可以在该表示之上对结构化数据进行分层。
API很老,就像java logging API一样旧。 但是这个设计非常基础和有用,因此没有太多要求更新它。 收藏框架也很古老,但我们每天都很开心(大部分)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.