SessionScoped托管bean注入不起作用

时间:2015-05-11 06:02:10

标签: jsf dependency-injection cdi jsf-2.2 managed-bean

这是我的SessionScoped托管bean:

import javax.enterprise.context.SessionScoped;
import javax.inject.Named;

@Named("clientSessionBean")
@SessionScoped
public class ClientSessionManagedBean implements Serializable {
...
}

这是我的requestcoped托管bean

import javax.enterprise.context.RequestScoped; 
import javax.inject.Inject;
import javax.inject.Named;   

@Named("myBean")
@RequestScoped
public class MyManagedBean {

 @Inject
 private ClientSessionManagedBean clientSessionBean;
 ..
 }

clientSessionBean给了我null

如何在requestcoped托管bean中注入sessionScoped bean?

包裹有问题吗?

1 个答案:

答案 0 :(得分:1)

在构造函数运行后,即在@PostConstruct及更长时间内,只能使用注入的资源。来自JSR-250的规范文档:

  

PostConstruct注释用于需要执行的方法 依赖注入完成后执行任何初始化

正如您应该能够从上面的摘录中推断出,bean生命周期中的事件序列是:

  1. 初始化即调用构造函数(实际机制更复杂,但归结为此)

  2. 进行注射

  3. 调用生命周期回调,即@PostConstruct。在这一点上,您可以使用在#2中创建的任何内容

  4. 相关