[英]Inject Spring managed SessionFactory bean in a JSF managed 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.