首页 > 解决方案 > 我应该将@ConfigProperty 字段包装在 javax.enterprise.inject.Instance 对象中吗?

问题描述

在我的 quarkus 项目中,我在过滤器(ContainerRequestFilter、ContainerResponseFilter)中注入了几个 ConfigProperty。这在启动时给了我以下警告:

[io.qua.res.com.dep.ResteasyCommonProcessor] (build-46) Directly injecting a @ConfigProperty into a JAX-RS provider may lead to unexpected results. To ensure proper results, please change the type of the field to javax.enterprise.inject.Instance<java.lang.String>. Offending field is 'fieldName' of class 'className'  

[io.qua.res.com.dep.ResteasyCommonProcessor] (build-46) Directly injecting a @ConfigProperty into a JAX-RS provider may lead to unexpected results. To ensure proper results, please change the type of the field to javax.enterprise.inject.Instance<java.util.List<java.lang.String>>. Offending field is 'fieldName' of class 'className'

但是,配置指南从未提及这一点,甚至显示了在 JAX-RS 资源中注入 ConfigProperty 的示例

此外,尽管有警告,但一切正常。所以我的问题是:我应该关心这个警告并应用它的建议还是可以忽略它?为什么指南中没有提到这一点(无论是简短的,还是参考的)

我正在使用 quarkus 1.12.2,但我也遇到了以前版本的“问题”。

标签: quarkuseclipse-microprofile-config

解决方案


该警告仅针对 JAX-RS 提供者显示,而不针对 JAX-RS 资源显示。

我建议您确实发出警告-但正如我上面提到的,仅对提供者进行更改(例如您提到的过滤器)


推荐阅读