有哪些轻量级Java配置库可以用来处理复杂的配置?
我需要为java应用程序处理一组相对复杂的配置参数。这些要求大致如下:有哪些轻量级Java配置库可以用来处理复杂的配置?,java,spring,configuration-files,Java,Spring,Configuration Files,我需要为java应用程序处理一组相对复杂的配置参数。这些要求大致如下: 带有列表、映射等的嵌套配置值-不仅仅是普通的键/值对 多个配置文件,以后的配置文件可以智能地覆盖以前配置文件中的设置 从不同位置对同一配置项的多个引用 可继承的已配置对象,因此新对象可以从以前的对象复制配置,只需更改特定的内容即可 一个新的配置选项只需要很少的代码——最好是只在字段中添加一个@Configurable注释,或者类似的东西 现在,我知道春天以某种方式实现了所有这些。然而,它也有一些缺点,尽管不是致命的:
- 带有列表、映射等的嵌套配置值-不仅仅是普通的键/值对
- 多个配置文件,以后的配置文件可以智能地覆盖以前配置文件中的设置
- 从不同位置对同一配置项的多个引用
- 可继承的已配置对象,因此新对象可以从以前的对象复制配置,只需更改特定的内容即可
- 一个新的配置选项只需要很少的代码——最好是只在字段中添加一个@Configurable注释,或者类似的东西
- Spring并没有真正优化为一种配置语言,因为它更关注依赖注入
- XML配置文件更多的是放在JAR文件中,而不是由最终用户修改,所有可配置的属性都是通过单独的属性文件或类似文件引用的——我需要配置文件是完整的,并且易于最终用户修改
- 当在线配置刷新而不终止正在进行的连接时,以及当需要单独的配置检查原语(需要完全验证配置,但实际上不做任何事情)时,Spring配置有些单调乏味
我有点喜欢YamlBeans,但它缺少一些功能。您已经看过了吗?我们在项目中使用的。非常轻巧且易于使用。对于大多数需求,我已经能够通过标准属性实现这一点。我将Properties对象包装在一个配置类中,该类从以下位置读取属性文件:
$var
替换。因为配置是一个Springbean,所以可以在我需要的任何地方注入它
类似的东西应该可以扩展到处理JSON或YAML文件,而不是属性文件,以允许映射、列表等。这一个看起来很有趣,尽管我不得不承认我没有使用过它:
你可以试一试。它主要面向分布式应用程序,但支持大多数请求的功能 我有,但它没有达到要求。现在,进一步阅读,我发现它确实支持许多功能,但我仍然不确定它是否满足要求,因此我需要重新阅读文档。再次阅读文档后:没有对同一配置对象的多个引用,也没有可继承的配置(不需要在Apache Commons配置的基础上自己进行配置)。此外,Apache Commons配置有很多运行时依赖项。它并不完全是轻量级的。看起来不错,只是似乎没有满足列出的要求,即对象引用和“固有性”。此外,这里还有一些将JSON属性集成到Spring配置文件中的示例代码:这是一个非常基本的设置。但是,我在问题中的要求特别列出了一些这无法实现的事情。这个项目的配置需求实际上非常复杂,需要它-当前的配置超过5000行。它评论发表已经6年了。但我仍然想写:真的,OWNER是一个非常有趣的选择:仍然受支持->最新版本:2020年6月;完美且非常好看的文档;轻量级->单罐您可以修改您自己的加载程序(并从任何来源获取属性)、转换器(并以任何方式将您的财产转换为任何类型)等。