我有一个与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:带有限定符[@Inject]注入点的[UserContext]类型的不满足依赖项。
如果我尝试删除@Inject
,则修复了部署问题,但usercontext对象为null,因此抛出NullPointerException
。我没有使用EJB,因此无法使用@EJB
而不是@Inject
。
答案 0 :(得分:1)
通过在UserContext中创建无参数构造函数来解决问题。创建了一个参数化构造函数,因此CDI注入无法调用默认构造函数。我们已经明确创建了一个默认的no-argmument构造函数,因此CDI注入工作。 创建了beans.xml,用于修复未满足和不明确的依赖项,并添加到META-INF。如果已显式启用实现bean类型且具有相应限定符类型的@Alternative bean,则使用beans.xml。