Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有哪些轻量级Java配置库可以用来处理复杂的配置?_Java_Spring_Configuration Files - Fatal编程技术网

有哪些轻量级Java配置库可以用来处理复杂的配置?

有哪些轻量级Java配置库可以用来处理复杂的配置?,java,spring,configuration-files,Java,Spring,Configuration Files,我需要为java应用程序处理一组相对复杂的配置参数。这些要求大致如下: 带有列表、映射等的嵌套配置值-不仅仅是普通的键/值对 多个配置文件,以后的配置文件可以智能地覆盖以前配置文件中的设置 从不同位置对同一配置项的多个引用 可继承的已配置对象,因此新对象可以从以前的对象复制配置,只需更改特定的内容即可 一个新的配置选项只需要很少的代码——最好是只在字段中添加一个@Configurable注释,或者类似的东西 现在,我知道春天以某种方式实现了所有这些。然而,它也有一些缺点,尽管不是致命的:

我需要为java应用程序处理一组相对复杂的配置参数。这些要求大致如下:

  • 带有列表、映射等的嵌套配置值-不仅仅是普通的键/值对
  • 多个配置文件,以后的配置文件可以智能地覆盖以前配置文件中的设置
  • 从不同位置对同一配置项的多个引用
  • 可继承的已配置对象,因此新对象可以从以前的对象复制配置,只需更改特定的内容即可
  • 一个新的配置选项只需要很少的代码——最好是只在字段中添加一个@Configurable注释,或者类似的东西
现在,我知道春天以某种方式实现了所有这些。然而,它也有一些缺点,尽管不是致命的:

  • Spring并没有真正优化为一种配置语言,因为它更关注依赖注入
  • XML配置文件更多的是放在JAR文件中,而不是由最终用户修改,所有可配置的属性都是通过单独的属性文件或类似文件引用的——我需要配置文件是完整的,并且易于最终用户修改
  • 当在线配置刷新而不终止正在进行的连接时,以及当需要单独的配置检查原语(需要完全验证配置,但实际上不做任何事情)时,Spring配置有些单调乏味
所以,我在问,你能想出任何能满足我要求的替代方案吗


我有点喜欢YamlBeans,但它缺少一些功能。

您已经看过了吗?

我们在项目中使用的。非常轻巧且易于使用。

对于大多数需求,我已经能够通过标准属性实现这一点。我将Properties对象包装在一个配置类中,该类从以下位置读取属性文件:

  • 普通的罐子
  • “应用程序”jar/classpath
  • 文件系统(指定为JVM的a-D属性)
  • 配置类代码使得应用程序中的属性覆盖公共属性,而文件系统属性覆盖应用程序级属性

    该配置作为Springbean加载,并将其内部属性对象公开给PropertyPlaceHolderConfigure,后者允许在SpringXML文件中进行进一步的
    $var
    替换。因为配置是一个Springbean,所以可以在我需要的任何地方注入它


    类似的东西应该可以扩展到处理JSON或YAML文件,而不是属性文件,以允许映射、列表等。

    这一个看起来很有趣,尽管我不得不承认我没有使用过它:


    你可以试一试。它主要面向分布式应用程序,但支持大多数请求的功能

    我有,但它没有达到要求。现在,进一步阅读,我发现它确实支持许多功能,但我仍然不确定它是否满足要求,因此我需要重新阅读文档。再次阅读文档后:没有对同一配置对象的多个引用,也没有可继承的配置(不需要在Apache Commons配置的基础上自己进行配置)。此外,Apache Commons配置有很多运行时依赖项。它并不完全是轻量级的。看起来不错,只是似乎没有满足列出的要求,即对象引用和“固有性”。此外,这里还有一些将JSON属性集成到Spring配置文件中的示例代码:这是一个非常基本的设置。但是,我在问题中的要求特别列出了一些这无法实现的事情。这个项目的配置需求实际上非常复杂,需要它-当前的配置超过5000行。它评论发表已经6年了。但我仍然想写:真的,OWNER是一个非常有趣的选择:仍然受支持->最新版本:2020年6月;完美且非常好看的文档;轻量级->单罐您可以修改您自己的加载程序(并从任何来源获取属性)、转换器(并以任何方式将您的财产转换为任何类型)等。