spring–@ManagedBean @Component类中的@Autowired服务在JSF请求期间为空

spring–@ManagedBean @Component类中的@Autowired服务在JSF请求期间为空,第1张

概述参见英文答案 > Spring JSF integration: how to inject a Spring component/service in JSF managed bean?                                    3个我尝试使用JSF 2进行联合Spring 3(MVC).我在Spring和JSF中有一些经

参见英文答案 > 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@Componentpublic class someBean {  @autowired  private TestService testService;  public voID printString() {    System.out.println(testService.getString());  }}

@ManagedBean(name = "studentBean")@Scope@Componentpublic 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;@autowiredpublic 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中对此进行了描述. 总结

以上是内存溢出为你收集整理的spring – @ManagedBean @Component类中的@Autowired服务在JSF请求期间为空全部内容,希望文章能够帮你解决spring – @ManagedBean @Component类中的@Autowired服务在JSF请求期间为空所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1265232.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存