没有 bean 有资格注入到注入点[JSR-365 5.2.2]

No bean is eligible for injection to the injection point[JSR-365 5.2.2]

大多数时候,我在基于 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]。

我使用 Microprofile 3.3 版和 wildfly 19.1 作为 运行 时间。

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

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

如果您在运行时没有遇到任何问题,而 只是您IDE在抱怨,请更新 IDE(如果它支持 MicroProfile配置) 或 ignore/suppress 此警告。

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