MicroProfile 的配置:如何注入自定义对象列表

Posted

技术标签:

【中文标题】MicroProfile 的配置:如何注入自定义对象列表【英文标题】:Configuration for MicroProfile: how inject list of custom object 【发布时间】:2021-03-13 14:51:48 【问题描述】:

我正在尝试在 quarkus 中注入对象列表,但收到错误消息“没有为类 ExternalApiParam 注册转换器”。

我的 yaml 是:

custom:
  external-api-list:
    - name: example-1
      uri: https://run.mocky.io/v3/55402172-82c3
    - name: example-2
      uri: https://run.mocky.io/v3/13417375-a19c

我的配置类是:

@ConfigProperties(prefix = "custom")
@Data
public class ExternalApiConfigProperties 

    List<ExternalApiParam> externalApiList;

我做错了什么?

【问题讨论】:

【参考方案1】:

您需要提供一个 Config Converter 类,该类可以读取配置值并将其转换为您的对象。

请在此处查看示例: https://github.com/smallrye/smallrye-config/blob/master/sources/yaml/src/test/java/io/smallrye/config/source/yaml/YamlConfigSourceTest.java#L141-L153

以及如何使用转换器: https://quarkus.io/guides/config#custom-configuration-converters

【讨论】:

它可以工作,但是当我为本地运行程序打包时它不起作用。我收到此错误“Cannot create property=externals-api-list for JavaBean=ExternalApiParams(externals-api-list=null)”。你有什么建议吗? 你能提供更多的上下文吗? 我在我的 quarkus 应用程序中以 jar 模式使用了这种方法,它可以工作。当我尝试以本机模式打包我的应用程序时,它不起作用。也许@ConfigMapping 会导致 quarkus 在本机模式下出现问题? 它引起了问题,那么它就是一个错误。你能提供给我一个复制器吗?谢谢!

以上是关于MicroProfile 的配置:如何注入自定义对象列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 java-ee8、microProfile 4.0、Openliberty 21 和 Docker 设置特定于阶段的微配置文件配置

spring boot 自定义druid数据源,如何注入配置

spring boot 自定义druid数据源,如何注入配置

ConfigProperty 未将值注入字段

如何将自定义 Executor 注入到 play 应用程序中?

使用 mp.config.profile 设置 Microprofile 活动配置文件在 Liberty 中不起作用