1

大多数时候,我在基于 MicroProfile 的微服务中使用 @Inject 注释,我得到“没有 bean 有资格注入到注入点 [JSR-365 5.2.2]”作为警告。这个警告的原因是什么?为了克服它可以做些什么?比如说。我为属性文件注入编写了代码-

@Path("/configProperty")
@Singleton
public class ConfigPropertyResource{
    
    @Inject
    @ConfigProperty(name = "username")
    private String username;

    @GET
    @Path("/mp-config")
    @Produces(MediaType.APPLICATION_JSON)
    public Response mpConfig() {
        Map<String, Object> configProperties = new HashMap<>();
        return Response.ok(configProperties).build();
    }
}

现在在 @Inject 注释处,它显示一个警告标志,其中包含建议-没有 bean 有资格注入到注入点 [JSR-365 5.2.2]。

我正在使用带有 Wildfly 19.1 的 Microprofile 3.3 版作为运行时。

注意:通过添加@SuppressWarnings("cdi-ambiguous-dependency"),它消失了,但它没有意义。

4

1 回答 1

1

我认为这是您使用的 IDE的问题。由于 Eclipse MicroProfile Config 使用众所周知的 CDI 注释,如@Inject,您的 IDE 会尝试为您提供支持以检查是否有可注入的 CDI bean。IDE 的这种 CDI 支持可能无法识别您实际上使用的是 Eclipse MicroProfile,因此经典的 CDI 支持认为您想要注入另一个 bean 而不是属性。

如果您在运行时没有遇到任何问题并且只有您 IDE 抱怨,请更新 IDE(如果它支持 MicroProfile Config)或忽略/抑制此警告。

我正在使用 IntelliJ IDEA 2020.2,并且在使用 Eclipse MicroProfile Config 开发应用程序时没有遇到此类问题。

于 2020-08-09T15:51:20.490 回答