【问题标题】:How to @autowire into jsf managed beans如何@autowire 进入 jsf 托管 bean
【发布时间】:2011-05-26 05:00:45
【问题描述】:

为了使用@Autowire注解,使用注解的对象必须来自spring上下文。

JSF 托管 bean 是由 JSF 的 IOC 而不是 Springs 创建的,因此我不能在其中使用 @Autowire 必须使用 faces-config.xml 和托管属性。

我已经设置了一个 EL 解析器,它可以让 spring bean 作为托管属性,我想更进一步,并摆脱每次需要自动装配某些东西时进入 faces-config.xml 的需要。这可能吗?

【问题讨论】:

标签: spring jsf ioc-container autowired


【解决方案1】:

只需使用@Controller(或@Component)和@Scope("request")(或session)注释您的托管bean 并添加<context:component-scan>(如果您没有),托管bean 将自动被检测为春豆。既然你已经在使用 ELResolver,那就应该是这样 - 你应该能够使用 @Autowired(或者更好 - @Inject,如果使用 spring 3.0)。

【讨论】:

  • 你是说我应该从 faces-config.xml 中完全删除托管 bean 吗?
  • @Bozho 在 JSF 2 中,新的 View 范围真的很有用吗?spring 附带了 bean 的范围??
  • @Necronet - 不,spring 没有这个范围。如何在 JSF 和 spring 之间实现这样的集成以便支持这个范围是一个很好的问题。我不知道答案。
  • @Bozho - 我相信如果使用 org.springframework.web.jsf.SpringBeanVariableResolver 你可能可以通过注入 bean面孔配置
  • 好吧,使用解析器,您将 jsf 的托管 bean 设施“交给”spring。所以我认为它不会起作用。
【解决方案2】:

您可以使用 @ManagedProperty(#{'someBean'}) 自动装配 jsf bean 中的其他 bean

【讨论】:

    猜你喜欢
    • 2014-01-27
    • 1970-01-01
    • 2012-01-27
    • 2014-07-01
    • 1970-01-01
    • 2023-03-27
    • 2015-03-11
    • 2023-03-05
    • 1970-01-01
    相关资源
    最近更新 更多