我正在清除Java库中的所有硬编码值,并且想知道哪个框架最适合处理运行时配置(在零或接近零的配置方面)? 我更喜欢基于XML的配置文件,但它并不重要。

如果您对框架有实际经验,请仅回复。 我不是在寻找例子,而是经验......

===============>>#1 票数:42

Apache Commons Configuration非常有用。 它支持在后端上以各种格式存储配置,包括属性,XML,JNDI等。 它易于使用和扩展。 为了获得最大的灵活性,请使用工厂来获取配置,然后使用Configuration接口

Commons Configuration的两个特性是通过直接的属性文件区分它,它支持自动转换为常见类型(int,float,String数组),它支持属性替换:

server.host=myHost
server.url=http://${server.host}/somePath

===============>>#2 票数:29 已采纳

如果您的硬编码值只是简单的键值对,您应该查看java.util.Properties 它比xml简单得多,更易于使用,而且实现起来非常麻烦。

如果你正在使用Java,你正在存储或从磁盘检索的数据被建模为一个键值对(听起来就像你的情况),那么我真的无法想象一个更好的解决方案。

我已经使用属性文件在较大的项目中简单配置小包,并且作为整个项目的更全局配置,我从未遇到过问题。

当然,这具有不需要任何第三方库来利用的巨大好处。

===============>>#3 票数:20

以下是各种选择:

您可能希望阅读使用JFig和JConfig进行Commons配置比较以及使用JFig 配置应用程序以获取来自不同用户的一些反馈。

就个人而言,我使用过jConfig,这是一次很棒的体验。

===============>>#4 票数:6

Commons配置

我们正在使用这个。 仅属性文件更容易处理,但如果您需要表示更复杂的数据公共配置,则可以执行此操作并读取属性文件。

如果你没有做任何复杂的事情,我会坚持使用适当的文件。

===============>>#5 票数:5

智能参数利用工具(InPUT, 页面允许将几乎任何(硬编码)决策外部化为基于XML的配置文件中的参数。 它是在2012年初启动的,旨在回应现有配置工具在普遍性和关注点分离方面存在的缺陷。

InPUT可能比大多数用例需要的更强大,因为它允许编程语言独立地制定实验数据(输入 - 输出),具有诸如复杂描述符到类映射的定义或基于的随机化配置产生和验证的特征。预定义的值范围(用于测试和研究,例如蒙特卡罗模拟)。 您可以使用子参数,参数值的相对限制(数字参数a>参数b)等来定义参数

它仍处于测试阶段,但相当稳定,我将它用于我的研究, 实验配置和记录以及教学目的 一旦它可用于其他语言(管道中的C ++适配器),其他研究人员/从业者就可以重用在C ++中运行相同算法实现的描述符(使用代码映射概念)。 这样, 可以验证实验结果/可以更轻松地迁移程序 文档仍处于工作过程中,但页面上提供了几个示例 InPUT是开源软件。

对于那些感兴趣的人, 概念研究论文

===============>>#6 票数:5

如果你想做一些高级(和类型安全)的事情,你可能想看看这个: http//www.ibm.com/developerworks/java/library/j-configint/index.html

===============>>#7 票数:3

我倾向于大多数时候使用java.util.Properties (或其他语言和框架中的类似类) 包装在特定于应用程序的配置类中,但我对此的替代或变体非常感兴趣。 特别是因为如果涉及配置数据的图形配置对话框或多个视图,事情会变得有点棘手。

不幸的是,我对Java的特定库没有任何经验(除了我自己编写的那些),但任何指针都会受到赞赏。

更新

好。 这不完全正确,其中三个是Spring Java配置项目

===============>>#8 票数:2

几周前我了这篇文章并得出结论,XML是最广泛使用的符号之一。

它是最好的吗? 我不这么认为,我真的很喜欢JSON,但工具仍然不符合XML,所以我想我们必须拭目以待。

===============>>#9 票数:1

你可以尝试YamlBeans 这样,您可以编写要保存配置数据的任何类,然后您可以自动在YAML中写入和读取它们。

YAML是一种人类可读的数据格式。 它比java.util.Properties具有更强的表达能力。 您可以拥有列表,地图,锚点,类型数据等。

===============>>#10 票数:1

请查看以下网址: http//issues.apache.org/jira/browse/CONFIGURATION-394

我们正在寻找的配置框架是Apache Commons Configuration之上的东西,必须支持并发问题,JMX问题和大多数商店(例如.properties文件,.xml文件或PreferencesAPI)。

weblogic团队在“管理控制台”上提供的内容是,通过它可以对配置进行事务性(原子)更新,以便通知已注册的侦听器。

Apache的人坚持认为这个项目超出了Commons Configuration的范围,也许!

我附上了一个简单的配置框架,请看一下。

===============>>#11 票数:1

我刚刚发布了一些关于使用Spring的ClassPathResource作为IoC替代品的简短代码 ClassPathResource允许您将属性文件放在类路径的任何位置(例如,所有在一个地方,或作为它们配置的代码的对等。我的示例只使用java.util.Properties,因此您可以使用明文“name = value”样式或其XML格式。

===============>>#12 票数:0

关于使用java.util.Properties的建议 - 从jdk 1.5开始,Preferences API(java.util.prefs)似乎是使用Properties API的首选替代方法。

理由:可扩展性,后端中立性等增加。

===============>>#13 票数:0

属性文件非常简单,如果需要更多功能,可以将一些配置文件格式化为Java类。 这些可以放在不同的包/模块中,可以在运行时使用像BeanShell这样的库进行预编译或加载。

注意:在最简单的情况下(预编译),您不需要任何其他库。

===============>>#14 票数:0

您可以查看新发布的tools4j-config,其任务声明是允许您在运行时轻松处理配置。

  ask by community wiki translate from so

未解决问题?本站智能推荐: