我有

@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是会话作用域的。 Bean2.object有哪些作用域? 2)为什么在someClass中注入不起作用?谢谢。

最佳答案

1)Bean2是会话作用域的。 Bean2.object有哪些作用域?


好吧,Bean2.object只是Bean2实例内的一个对象,因此没有任何CDI范围。


  2)为什么在someClass中注入不起作用?谢谢。


至少有两个原因:


someClass(顺便说一句,请检查命名约定)不是CDI托管的bean
Bean2.object引用的对象不是CDI创建的,因此CDI甚至不知道实例存在。


要解决此问题,请将someClass设为托管bean,然后让CDI将实例注入Bean2.object

09-26 12:08