我有
@Named("bean1")
@javax.enterprise.context.SessionScoped
public class Bean1 implements Serializable {
// ...
}
@Named("bean2")
@javax.enterprise.context.SessionScoped
public class Bean2 implements Serializable {
private SomeClass object = new SomeClass();
}
和
public class SomeClass {
@Inject
private Bean1 injBean;
}
我的问题:
1) Bean2 是 session 范围的。 Bean2.object 有哪些范围?
2)为什么someClass中的注入(inject)不起作用?谢谢。
最佳答案
1) Bean2 is session scoped. Which scope does Bean2.object have?
嗯,Bean2.object
只是 Bean2
实例内的一个对象,因此没有任何 CDI 范围。
2) Why does the injection in someClass not work? Thanks.
至少有两个原因:
someClass
(顺便说一句,检查命名约定)不是 CDI 托管 beanBean2.object
引用的对象不是由 CDI 创建的,因此 CDI 甚至不知道该实例存在。
要解决这个问题,请将 someClass
设为托管 Bean,并让 CDI 将实例注入(inject)到 Bean2.object
中。
关于java - 非bean对象中的EJB CDI注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24940345/