当前位置: 首页 > 知识库问答 >
问题:

如何为Quarkus扩展编写对象列表的配置

荀辰钊
2023-03-14

我正在编写一个Quarkus扩展(内部用法),不知道如何正确地编写配置部分。

some:
  list-of-config:
    - prop1: value1
      prop2: value2
      prop3: value3
    - prop1: value4
      prop2: value5
      prop3: value6
@ConfigRoot(name = "some", phase = ConfigPhase.BUILD_TIME)
public class MyConfig {

  @ConfigItem(defaultValue = "true")
  public boolean enabled;

  public List<MyGroup> listOfConfig;

  @ConfigGroup
  public static class MyGroup {

    @ConfigItem
    public String prop1;
    
    @ConfigItem
    public String prop2;

    @ConfigItem
    public String prop3;
  }
}
SRCFG00013: No Converter registered for class org....MyConfig$MyGroup

@ConfigGroup在作为单个对象加载时工作得很好,而不是作为列表加载。我想这实际上与配置组本身无关,因为我在没有使用配置组但使用简单对象的情况下也会出现此错误。

是否已经有人尝试使用对象列表作为Quarkus扩展的配置?官方文件缺乏这方面的例子。

共有1个答案

宋育
2023-03-14

根据文档,任何未列出或接受字符串参数作为构造函数/ValueOf/Of的类型都不能与列表或可选类型一起使用,可选类型也可以应用于配置组对象。不幸的是,可选的+config组被这里提到的bug

所以看起来不支持自定义对象,这回答了我的问题。Quarkus还在为扩展添加配置映射,这将解决这些问题,并在未来的版本中添加对复杂类型的支持(在提出这个问题时是2.1.0)

 类似资料:
  • 我有一个自己的骆驼组件/endpoint,我在Spring Boot应用程序中成功地在许多路线中使用。我正试图迁移到骆驼夸克斯,并在我的应用程序中使用相同的路线。 在我的camel quarkus应用程序中,仅通过添加相关依赖项是不可能使用此组件/endpoint的:quarkus无法像Spring Boot那样发现此组件/endpoint。 显而易见的解决方案是编写一个在后台使用这个camel组

  • 我有一个项目实体 我想要一个生成具有以下规则的数字的函数: 根元素得到一个像1这样的数字。2.

  • 我有一个特点和扩展它的对象。 我想创建这个对象的列表并映射到上面: 以及实现Poly函数的不同尝试: 编译器告诉我: 错误:(45,43)找不到参数映射器的隐式值:无形状。ops。hlist。映射器[com.test.EncodePoly.type,com.test.A.type::com.test.B.type::com.test.C.type::shapeless.HNil]val结果:Lis

  • 问题内容: 我对使用python list对象感兴趣,但功能略有改变。特别是,我希望列表是1索引而不是0索引。例如: 输出应为:1 但是,当我更改和方法来执行此操作时,出现了错误。我对这些方法进行了很多修改,但这基本上就是我在那里做的: 我想问题是它本身正在调用与定义的方法相同的方法。如果是这样,如何使它使用方法而不是方法?我尝试使用代替,但导致投诉 有任何想法吗?另外,如果您可以为此指出一个好的

  • 编组或取消编组对象 您可以将若干个对象合并到一个组中,把这些对象作为一个单元同时进行处理。这样,您就可以同时移动或变换若干个对象,且不会影响其属性或相对位置。例如,您可能想将徽标设计中的对象编成一组,以便将其作为一个单元进行移动和缩放。 编组对象被连续堆叠在图稿的同一图层上,位于组中最前端对象之后;因此,编组可能会更改对象的图层分布及其在给定图层上的堆叠顺序。如果您选择位于不同图层中的对象并将其编

  • 编组或取消编组对象 您可以将若干个对象合并到一个组中,把这些对象作为一个单元同时进行处理。这样,您就可以同时移动或变换若干个对象,且不会影响其属性或相对位置。例如,您可能想将徽标设计中的对象编成一组,以便将其作为一个单元进行移动和缩放。 编组对象被连续堆叠在图稿的同一图层上,位于组中最前端对象之后;因此,编组可能会更改对象的图层分布及其在给定图层上的堆叠顺序。如果您选择位于不同图层中的对象并将其编

  • 问题内容: 我试图在不修改本机对象本身的情况下继承/扩展本机Date对象。 我已经试过了: 还有这个: 在这两种情况下都可以,但是当我调用任何本地方法(例如甚至)时,都会收到“ TypeError:这不是Date对象”。 有任何想法吗?还是我坚持扩展顶级Date对象? 问题答案: 查看date.js中的v8代码: 并且看起来DATE_VALUE是执行此操作的宏: 因此,似乎v8不会让您继承Date

  • 属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 var foo = 'bar'; var baz = {foo}; baz // {foo: "bar"} // 等同于 var baz = {foo: foo}; 上面代码表明,ES6允许在对象之中,只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。下面是另一个例子。 function f(