为什么Quarkus抱怨我的(未使用的)带有@ConfigProperty属性的@ApplicationScoped数据



此kotlin数据类是某些Quarkus微服务(Quarkus 2.0.0.Final(中使用的内部库的一部分:

@ApplicationScoped
data class FooConfiguration(
@ConfigProperty(name = "foo.bar")
val fooBar: String
)

该库在少数微服务中使用,并且大多数微服务都使用该配置。但有些不是。对于这些,foo.bar属性没有在application.properties中定义。我希望这根本不重要,因为这些服务从来没有注入FooConfiguration,所以我希望永远不会构建它。

但是,应用程序拒绝启动,并显示以下错误消息:

SRCFG00014: The config property foo.bar is required but it could not be found in any config source

我知道如何解决这个问题(简单地提供一个无意义的值(,但我目前想知道为什么这是一个问题。永远不应该构造配置bean。为什么会发生这种情况?

这是一个与MicroProfile配置相关的问题。

您的foo.bar属性是可选的,按照MicroProfile Config规范的说法,这不是必需的,因为它的值在任何配置源中都不存在,正如您所指出的。要为可选的MicroProfile Config配置属性注入值,需要使用java.util.Optional。我不知道Kotlin,所以下面是它在Java中的样子:

@Inject
@ConfigProperty(name = "foo.bar")
private Optional<String> fooBar;

最新更新