繁体   English   中英

将Spring 3 bean注入JSF 2托管bean的干净方法?

[英]Clean way to inject a Spring 3 bean into a JSF 2 managed bean?

我正在将我们当前的解决方案从JSF 1.2迁移到JSF 2.因为我需要使用新的View范围,所以我正在使用JSF 2注释。 这迫使我使用JSF @ManagedProperty注释而不是Spring的@Autowired注入Spring bean

之前它是这样的:

@Autowired private OneService oneService

而现在它就像:

@ManagedProperty(value="#{oneServiceImpl}")
private OneService oneService

您是否知道是否有办法在不需要声明其bean名称的情况下注释托管属性?

谢谢!

不,没有。 JSF使用表达式语言(EL)来确定您按名称引用的类。 使用一个名为ELResolver的类,他接受传递的String,解释并做出适当的引用。 SpringBeanFacesELResolver类提供了两个框架之间的集成,拦截请求并将其传递给Spring的上下文,Spring处理提供ManagedBeans所需的依赖关系,然后ManagedBeans将其传递给JSF自己的ELResolver。 所以JSF需要bean的名称来知道要注入什么。

你仍然可以使用Spring和JSF 2.只需创建一个自定义的Spring作用域,然后可以将其用作bean的视图作用域。

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

    @Inject
    private MyManagedProperty oneService;

    //...

}

在此处窃取View范围的实现: http//cagataycivici.wordpress.com/2010/02/17/port-jsf-2-0s-viewscope-to-spring-3-0/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM