将列表映射注入配置

Injecting a map of lists into configuration

我正在尝试将列表的动态映射注入到我的 Quarkus 应用程序中,但不确定这是否可行。我还没有看到 Quarkus 关于此事的任何文档,所以我想知道 smallrye-config 是否支持它。

app:
  example:
  - key: KeyExample
    values:
    - test 1
    - test 2
    - test 3
  - key: KeyExample2
    values:
    - test 1
    - test 2
    - test 3

我试图避免以下语法,然后对配置执行 post 处理以达到预期效果:

app:
  example:
    - KeyExample;test 1
    - KeyExample;test 2
    - KeyExample;test 3
    - KeyExample2;test 1
    - KeyExample2;test 2
    - KeyExample2;test 3

遗憾的是,SmallRye Config 不直接支持Map<V, List<?>(可以添加)。

如果稍微更改一下 YAML,也可以达到相同的结果:

 app:
  example:
    KeyExample:
      values:
      - test 1
      - test 2
      - test 3
    KeyExample2:
      values:
      - test 1
      - test 2
      - test 3

然后您可以像这样为其提供映射:

@ConfigMapping(prefix = "app")
interface MapListConfig {
    Map<String, Lists> example();
    
    interface Lists {
        List<String> values();
    }
}

随时打开 https://github.com/smallrye/smallrye-config/ 中的增强功能以​​添加 Map<V, List<?> 支持。