【发布时间】:2010-12-13 21:33:27
【问题描述】:
我对默认解决方案很满意,但是还有什么更高级的吗?
【问题讨论】:
标签: java properties config
我对默认解决方案很满意,但是还有什么更高级的吗?
【问题讨论】:
标签: java properties config
这是一个很好的方法,允许您使用 spring 覆盖每个环境的默认值:
【讨论】:
你在找什么? properties 只是键/值对的列表。
您可以使用更高级的属性,例如 XML,但它更复杂。
【讨论】:
Apache Commons-Configuration 项目有各种实现来读取、写入和管理配置文件。其中包括平面属性(文本文件中的键值对)、结构化 XML(配置参数具有可读名称的 XML 文件)、分层 、Windows INI格式、JNDI、系统属性等
它们支持基本数据类型(字符串、数字、布尔值)、列表和自定义数据类型的转换器,例如 URL、颜色, 日期等。
可以从各种来源读取配置,例如文件、输入流、内存表示、URL、JDBC 数据源、属性列表文件 (plist)、字符串、Applet 参数、Servlet 参数当然还有系统属性。
独特功能包括 XPath 表达式评估、变量插值器、自动重新加载、可观察配置、验证甚至多租户。
示例用法:
CompositeConfiguration config = new CompositeConfiguration();
config.addConfiguration(new SystemConfiguration());
config.addConfiguration(new PropertiesConfiguration("app.properties"));
// Some impls have special features:
// xmlConfig.setValidating(true);
// propsConfig.setAutoSave(true);
// propsConfig.setReloadingStrategy(new FileChangedReloadingStrategy());
config.setListDelimiter('/');
config.addProperty("greeting", "Hello, how are you?");
config.addProperty("colors.graph", "#808080/#00FFCC/#6422FF");
String salut = config.getString("greeting");
String[] colGraph = config.getStringArray("colors.graph");
【讨论】:
看看OWNER API,它是一个基于注释的迷你框架,做了一些巧妙的事情。
根据 1.0.3 版本,它确实支持对象映射(用户可自定义)、自动类型转换、变量扩展、使用两种不同策略从多个源加载属性(合并文件或采用第一个可用的)、从maps(类似于commons logging的复合配置)。
版本 1.0.4 将尽快发布,它将包括对类型转换中的集合和数组的支持,两种带有通知机制的“热重新加载”(您更改磁盘上的文件,对象会自动重新加载)。如果您愿意下载源代码并自行打包,所有这些功能都已在 master 分支上可用。
还有更多我正在研究的想法。 如果您有任何要求,我很高兴听到。请参阅 github issues 了解我正在处理的其他事情。
【讨论】: