首页 > 解决方案 > 在 Quarkus 中读取带有属性映射的配置文件

问题描述

Myapplication.yaml有一个存储在 yaml 文件中的值映射。

app:
  myMap:
    key1: value1
    key2: value2
    key3: value3

配置类:

@Data
@ApplicationScoped
public class AppConfiguration {

    @ConfigProperty(name = "app.myMap")
    private Map<String, String> myMap;
}

这会导致以下错误:
javax.enterprise.inject.spi.DeploymentException: No config value of type [java.util.Map] exists for: app.myMap

我无法读取这些值,因为 MicroProfile 不支持java.util.Map. 我遇到了这个邮件列表,它提出了一种解决方法,但对 Quarkus 来说相当新,我不确定如何正确实施。它也有一年了,我想知道是否有比邮件列表中建议的更好的实现。

标签: javayamlquarkusmicroprofile

解决方案


是的,现在确实有更好的方法。Quarkus 配置由 SmallRye Config 实现。不幸的是,它不直接支持 Map 直接注入,但您可以使用此处记录的映射对象:https ://smallrye.io/docs/smallrye-config/main/mapping/mapping.html

这是一个示例项目: https ://github.com/smallrye/smallrye-config/tree/main/examples/mapping

所有这些都在 Quarkus 中工作。


推荐阅读