Java configuration framework我正在淘汰Java库中的所有硬编码值,并且想知道哪种框架最适合处理运行时配置(就零或接近零配置而言)? 我希望使用基于XML的配置文件,但这不是必需的。 如果您有框架方面的实践经验,请仅作答复。 我不是在寻找例子,而是经验…… Apache Commons Configuration很好用。它支持将配置以各种格式存储在后端,包括属性,XML,JNDI等。它易于使用和扩展。为了获得最大的灵活性,请使用工厂来获取配置,然后再使用Configuration接口。 Commons Configuration的两个功能使它与直接的Properties文件有所不同,它支持自动转换为常见类型(int,float,String数组),并且支持属性替换:
如果您的硬编码值只是简单的键值对,则应查看java.util.Properties。它比xml简单得多,易于使用,并且实现起来非常麻烦。 如果您正在使用Java,并且将从磁盘存储或检索的数据建模为键值对(听起来像是您的情况),那么我真的无法想象有更好的解决方案。 我已经使用属性文件来对较大项目中的小程序包进行简单配置,并且对整个项目进行了更全局的配置,而我从来没有遇到过问题。 当然,这具有不需要任何第三方库就可以利用的巨大好处。 以下是各种选项:
您可能需要阅读"使用JFig和JConfig进行公共配置比较"以及"使用JFig配置应用程序"以获得来自不同用户的一些反馈。 就个人而言,我使用过jConfig,这是一个很好的体验。 共用配置 我们正在使用这个。单独使用属性文件更容易处理,但是如果您需要表示更复杂的数据公共配置,则可以执行此操作并读取属性文件。 如果您没有做任何复杂的事情,我会坚持使用属性文件。 智能参数利用工具(InPUT,page)允许将几乎所有(硬编码)决策作为参数外部化到基于XML的配置文件中。它已于2012年初启动,以应对现有配置工具在通用性和关注点分离方面存在的不足。 InPUT可能比大多数用例所需的功能更强大,因为它允许以编程语言独立地表示实验数据(输入-输出),并具有诸如复杂描述符到类映射的定义或基于以下内容的随机配置生成和验证等功能预定义的值范围(用于测试和研究,例如蒙特卡洛模拟)。您可以定义具有子参数的参数,对参数值的相对限制(数字参数a>参数b)等。 它仍处于测试阶段,但相当稳定,我将其用于研究,实验的配置和文档以及教学目的。一旦可用于其他语言(管道中的C ++适配器),其他研究人员/从业人员就可以重用运行C ++中相同算法实现的描述符(使用代码映射概念)。这样,可以验证实验结果/可以更轻松地迁移程序。该文档仍在工作中,但是该页面上有几个示例。 InPUT是开源软件。 对于那些感兴趣的人,概念研究论文。 如果您想做一些高级的(并且类型安全的),您可能需要看一下:http://www.ibm.com/developerworks/java/library/j-configint/index.html
大多数时候,我倾向于使用包装在特定于应用程序的配置类中的 不幸的是,我对Java的特定库没有任何经验(除了我自己编写的库以外),但是任何指针都将不胜感激。 更新资料 好。并非完全如此,其中三个是Spring Java Configuration Project。 几周前,我写了这篇文章,得出结论,XML是使用最广泛的符号之一。 最好吗?我不这么认为,我真的很喜欢JSON,但是该工具仍然无法使用XML,因此我想我们必须拭目以待。 我刚刚发布了有关使用Spring的ClassPathResource替代IoC的简短代码。 ClassPathResource允许您将属性文件放置在类路径上的任何位置(例如,全部放置在一个位置,或作为它们配置的代码的对等体。)我的示例仅使用java.util.Properties,因此可以使用纯文本" name = value"样式或其XML格式。
请查看以下URL: 我们正在寻找的Configuration框架是Apache Commons Configuration之上的东西,并且必须支持并发问题,JMX问题和大多数存储(例如.properties文件,.xml文件或PreferencesAPI)。 weblogic团队在"管理控制台"上提供的功能很有趣,您可以通过它在配置上进行事务性(原子性)更新,以便通知已注册的侦听器。 Apache的人坚持认为,这个项目可能不在Commons Configuration的范围之内! 我已经附上了一个简单的配置框架,请看看。 您可以尝试YamlBeans。这样,您可以编写任何想要保存配置数据的类,然后可以自动在YAML中读写类。 YAML是一种人类可读的数据格式。它比java.util.Properties具有更多的表达能力。您可以具有列表,地图,锚点,键入的数据等。 您可以看看新发布的tools4j-config,其任务说明是允许您在运行时轻松处理配置。 关于使用java.util.Properties的建议-从jdk 1.5开始,首选项API(java.util.prefs)似乎是使用Properties API的首选替代方法。 原因:增加了可伸缩性,后端中立性等。 属性文件非常简单,如果您需要更多功能,则可以将某些配置文件格式化为Java类。它们可以放置在不同的包/模块中,并可以在运行时使用BeanShell之类的库进行预编译或加载。 注意:在最简单的情况下(预编译),您不需要任何其他库。 |