为`.properties`文件实现特定于层的结构

时间:2018-08-28 01:49:09

标签: java properties properties-file spark-java

我正在尝试为我的媒体资源实施特定于层的后备系统。

我知道像Spring这样的更高级的框架已经内置了对此的支持,但是我使用的是最小的Spark Java框架。

说我具有以下结构-

src/
  main/
    resources/
      properties/
        dev/
          |- application.properties
          |- ValidationMessages.properties
          |- log4j.properties
        prod/
          |- application.properties
          |- ValidationMessages.properties
          |- log4j.properties
        test/
          |- application.properties
          |- ValidationMessages.properties
          |- log4j.properties

        application.properties
        ValidationMessages.properties
        log4j.properties

我希望属性的来源如下。假设我有一个系统配置APP.TIER,让我在运行时知道当前层是什么(testdevprod等)

  1. 任何顶级“共享”文件(例如properties/application.properties)都应适用于所有层
  2. (例如properties/${APP.TIER}/application.properties)中任何特定于层的属性都应覆盖通用值

至少使用应用程序属性,我可以在main()方法开始时以编程方式加载它们,并使它们在整个应用程序中可用(example)。我还可以控制它们的加载顺序,因此确保我手动应用了上述后备逻辑。

但是对于第三方插件(例如Hibernate使用的ValidationMessages.properties或log4j使用的log4j.properties),我无法控制属性的加载方式。

是否存在支持此类财产来源的通用框架?我知道maven支持配置文件和过滤,但这意味着我必须为每个层构建一个单独的JAR文件,这似乎不是一个好习惯。

0 个答案:

没有答案