繁体   English   中英

CDI Bean访问Spring bean?

[英]CDI Bean accessing Spring beans?

我知道这听起来很奇怪,将CDI(Weld)和Spring混合为控制器。

但想象一下这种情况:

  1. 使用CDI,我可以使用@ConversationScoped,这是我的要求之一(到目前为止,我不知道我是否可以使用spring作为这种范围,因为如果可以的话,我可以用Spring代替Weld, 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的任何想法? 谢谢 !


更新

我刚刚测试了这篇文章的解决方案,到目前为止它工作正常,我感到宽慰。

谢谢 !

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

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

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

此外,如果您正在尝试跨一系列页面管理状态,并希望对Struts或JSF或Spring MVC进行有效的会话管理,那么Spring Web Flow可以提供您所需要的内容,并为流量范围内的Bean提供服务。流的持续时间,或多或少等同于Seam / CDI中的会话。 如果您想要一个更长寿命的流量管理解决方案,Activiti SPring模块可以简化配置一些在过程范围内生存的bean,类似于Seam对jBPM的功能。

暂无
暂无

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

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