具有特定构造函数的 class 上的注入点依赖性不满足或不明确

unsatisfied or ambiguous dependencies for injection point on a class which has a specific constructor

我有一个与 CDI 警告有关的问题,即注入点的依赖关系不满足或不明确。

代码段:

@Named(value = "LoginView")
@RequestScoped
public class LoginView implements Serialization {
    private static final long serialVersionUID = 1L;

    @Inject
    private  UserContext userContext;

}
@Named
@ApplicationScoped
public class UserContext implements Serialization {

    public UserContext(String app, String prod, List<String>prodLines) {
        this.app=app;
        this.prod=prod;
        this.prodLines = prodLines;
    }
}

我得到:

org.weld.exceptions.DeploymentExceptions: unsatisfied dependencies for type[UserContext] with qualifiers[@Inject] injection point.

如果我尝试删除 @Inject,部署问题已解决,但 usercontext 对象为空,因此抛出 NullPointerException。我没有使用 EJB,所以不能使用 @EJB 而不是 @Inject

问题已通过在 UserContext 中创建无参数构造函数解决。创建了参数化构造函数,因此 CDI 注入无法调用默认构造函数。我们已经明确创建了一个默认的无参数构造函数,因此 CDI 注入起作用了。 创建 beans.xml 用于修复不满足和不明确的依赖项并添加到 META-INF。如果您已显式启用实现 bean 类型并具有适当限定符类型的 @Alternative bean,请使用 beans.xml.