我正在清除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

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

3回复

Java:使用哪个配置框架?

我需要决定使用哪个配置框架。 目前我在考虑使用属性文件和XML文件。 我的配置需要有一些原始分组,例如XML格式将是这样的: 或属性文件(类似于log4j.properties): 我需要双向(读写)配置库/框架。 好的功能是 - 我可以把不同的配置组读出来作为不同的对象,
3回复

使用ConfigurationManager无法读取配置

我第一次尝试使用ConfigurationManager,因此我做了以下事情: 1.)创建一个新项目(TestProject) 2.)右键单击TestProject-> Add-> New Item-> Application Configuration File(名称:
2回复

Web UI配置框架

我正在寻找一种支持以下功能的UI框架: 与Apache Commons Config和/或JFig集成 支持嵌套选项卡 了解用户/组/角色 可以与JMX MBean交互 不需要Java脚本即可运行 用Java编写,最好是基于JSP编写
2回复

关于在Spring Framework应用程序中使用Beans.xml配置文件

我正在学习Spring MVC。 今天,试图理解如何实现JDBC DAO,我在Spring(Spring,而不是Spring MVC)中找到了这个“Hello World”,我开始看到它(因为我认为要实现DAO我必须创建一个单独的Spring执行数据访问的项目...) http://ww
1回复

你需要“关闭”.net配置

创建配置对象以管理.net配置文件时,是否需要关闭文件。 我有一个带有几个.dll组件的应用程序。 我是否必须使用全局配置以避免将其他.dll所做的更改写入同一配置文件。 我是否知道在从另一个模块更改同一配置文件之前需要关闭/处置此配置。
2回复

具有非ConfigurationElement属性的自定义配置节

我有一个工作的自定义配置部分。 但是,通过ConfigurationElementCollection获取我的数据是一件痛苦的事情,但是当我尝试将我的属性实现为IEnumerable时,它会因错误而失败: ConfigurationErrorsException未处理“属性'联系人'
2回复

无法多次将配置保存到文件

我有代码,包括单元测试,试图多次保存配置文件。 当我再次尝试保存配置文件时,出现此错误: 无法将配置保存到文件[FileName] 我的代码基本上是这样做的: 然后再来 当我第二次执行config.save时,有10秒的延迟,然后出现错误。 有人知道如何“解
1回复

slowcheetah转换配置文件中元素的值

我知道如何使用SlowCheetah更改属性的值,但是如何更改元素的值。 app.Debug.config: 这是我在app.Staging.config中的失败尝试:
1回复

Visual Studio的新调试配置

我正在尝试配置Visual Studio 2010,以添加调试配置。 Configuration Manager->通过在活动的解决方案配置中启动:或Project,添加New,创建New配置,从Debug复制...(如果解决方案,要么创建新配置,要么仅使用Debug并添加新的项目配
5回复

C#读取配置设置

我有一个C#类库A,它的App.config中有一些配置设置我用它来访问它们 但是当我从ASP Web项目B调用方法1()时,它无法在类库A中找到配置设置 知道这里发生了什么吗?