将Spring3bean注入JSF2托管bean的干净方法?

将Spring3bean注入JSF2托管bean的干净方法?,spring,jsf-2,annotations,Spring,Jsf 2,Annotations,我正在将当前的解决方案从JSF1.2迁移到JSF2。由于我需要使用新的视图范围,所以我使用JSF2注释。这迫使我使用JSF@ManagedProperty注释而不是Spring的@Autowired来注入springbean 以前是这样的: @Autowired private OneService oneService 现在就像: @ManagedProperty(value="#{oneServiceImpl}") private OneService oneService 您知道有没有

我正在将当前的解决方案从JSF1.2迁移到JSF2。由于我需要使用新的视图范围,所以我使用JSF2注释。这迫使我使用JSF@ManagedProperty注释而不是Spring的@Autowired来注入springbean

以前是这样的:

@Autowired private OneService oneService
现在就像:

@ManagedProperty(value="#{oneServiceImpl}")
private OneService oneService
您知道有没有一种方法可以在不需要声明托管属性的bean名称的情况下对其进行注释


谢谢

没有。JSF使用表达式语言(EL)来确定通过名称引用哪个类。使用一个名为的类,他获取传递的字符串,解释并进行适当的引用。该类提供两个框架之间的集成,拦截请求并将其传递给Spring上下文,Spring上下文处理提供ManagedBeans所需的依赖项,后者随后将其传递给JSF自己的ELResolver。因此,JSF需要bean的名称来知道注入什么。

您仍然可以将Spring与JSF2一起使用。只需创建一个定制的Spring作用域,它就可以用作bean的视图作用域

@Named @Scope("view")
public class MyBean {

    @Inject
    private MyManagedProperty oneService;

    //...

}
在此处窃取视图范围的实现: