加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

spring – @ManagedBean @Component类中的@Autowired服务在JSF

发布时间:2020-12-15 01:39:02 所属栏目:大数据 来源:网络整理
导读:参见英文答案 Spring JSF integration: how to inject a Spring component/service in JSF managed bean?????????????????????????????????????3个 我尝试使用JSF 2进行联合Spring 3(MVC).我在Spring和JSF中有一些经验,但之前从未尝试过加入它们.最后我有2个

参见英文答案 > Spring JSF integration: how to inject a Spring component/service in JSF managed bean?????????????????????????????????????3个
我尝试使用JSF 2进行联合Spring 3(MVC).我在Spring和JSF中有一些经验,但之前从未尝试过加入它们.最后我有2个文件

@ManagedBean(name = "userBean")
@Scope
@Component
public class someBean {

  @Autowired
  private TestService testService;

  public void printString() {
    System.out.println(testService.getString());
  }
}

@ManagedBean(name = "studentBean")
@Scope
@Component
public class StudentBean {

  @Autowired
  private TestService testService;

  public void printString() {
    System.out.println(testService.getString());
  }
}

对于这些文件,我有正确的spring,jsf和web.xml配置.并有.xhtml页面,我为’someBean’和’StudentBean’启动printString().我在第一种情况下使用NPE,在第二种情况下在控制台中使用“some string”.
原因很简单 – Spring上下文和JSF中的bean名称不同.所有问题都完成了

@Component => @Component("userBean") 
public class someBean {

在调试中我看到了

private TestService testService;

@Autowired
public void setTestService(TestService testservice) {
  this.testService = testService;
}

当JSF bean创建的testService集不为null时,但在JSF生命周期中它为null时

public void pringString() {
  testService.blah();
}

testService为null.这是我无法理解的.有谁深入了解Spring和JSF详细描述这种情况?

最佳答案
JSF和Spring都可以充当bean容器. @ManagedBean批注指示JSF托管bean工具创建该类的新实例,并在给定名称下对其进行管理. @Component注释指示Spring ApplicationContext创建类的新实例,并在给定名称下对其进行管理.也就是说,JSF和Spring都创建了该类的实例,JSF可以通过EL访问,但是Spring会注入其依赖项(因为,作为一个spring注释,@ Autowired不被JSF托管bean工具理解) .

所以你有一个选择:将JSF托管bean工具用于所有东西(我不推荐,因为它相当有限),使用CDI进行一切(这是一个选项,但不使用Spring),或者使用Spring进行一切(我通常这样做),删除@ManagedBean注释,并通过在faces-config.xml中注册SpringBeanFacesELResolver使Spring bean可以通过EL访问. Spring参考手册在section 19.3.1中对此进行了描述.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读