【问题标题】:CDI Bean accessing Spring beans?CDI Bean 访问 Spring bean?
【发布时间】:2011-07-27 11:29:02
【问题描述】:

我知道这听起来很奇怪,为控制器混合 CDI(焊接)和弹簧。

但是想象一下这种情况:

  1. 使用 CDI,我可以使用 @ConversationScoped,这是我的要求之一(到目前为止,我不知道是否可以将 spring 用于这种范围,因为如果可以,我可以将 Weld 替换为Spring,在 faces-config.xml 中使用 el-resolver)
  2. 我的服务对象 (@Service) 以及 DAO (@Repository) 将由 Spring 管理

现在出现的一个问题是,在我的控制器内部,我如何访问我的服务对象?

我认为这样的东西行不通:

@Named
@ConversationScoped
public class MyBean {
   @Named
   private SomeOtherBeanManagedByCDI myOtherBean; // this will work

   @Autowired
   private MySpringBean mySpringBean; // dont think that this will work

   ....
}

关于如何在 cdi bean 中使用 spring bean 的任何想法?谢谢!


更新

我刚刚测试了this article的解决方案,目前运行良好,我放心了。

谢谢!

【问题讨论】:

    标签: spring jsf-2 cdi


    【解决方案1】:

    此外,如果您尝试跨一系列页面管理状态,并希望对 Struts 或 JSF 或 Spring MVC 进行有效的对话管理,Spring Web Flow 提供了您所需要的,并配有流范围的 bean在流程的持续时间内存活,或多或少等同于 Seam / CDI 中的对话。如果你想要一个更长寿的流管理解决方案,Activiti SPring 模块让配置一些在流程范围内存活的 bean 变得非常简单,类似于 Seam 为 jBPM 提供的功能。

    【讨论】:

      【解决方案2】:

      在 OP 中仍然有一个很好接受的答案和一些很好的编辑,但我认为还有时间指出 Seam Spring 模块。

      【讨论】:

      • Seam Spring 的链接不再存在。
      【解决方案3】:

      Rick Hightower 编写了一个不错的扩展库,它支持将 Spring bean 注入 CDI bean,反之亦然:

      http://rick-hightower.blogspot.com/2011/04/cdi-and-spring-living-in-harmony.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-20
        • 2013-04-11
        • 1970-01-01
        • 2017-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        相关资源
        最近更新 更多