具有特定构造函数的 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.
我有一个与 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.