2009-12-14 69 views
0

我需要将Spring bean注入到Seam上下文中。除非我将spring bean声明为EJB,否则我无法将其注入其他接缝管理组件。但是当我这样做时,所有Spring注入的字段都是无用的,因为Seam会在运行时创建新的实例。如何将Spring bean注入到Seam上下文中?

我也试图在<seam:component/>元素添加到春季bean定义,并试图与目标类的@In("beanId")注解注入它在容器中,但我总是一个NullPointerException结束了......

编辑:

我阅读在线文章并按照他们的说法做了。我的弹簧组件也被添加到接缝上下文中(我可以说,当我在接缝中定义一个具有相同ID的接口时,它会发出抱怨)。看起来像@In不拾起....

+0

你使用的是什么版本的Spring? – Zach 2009-12-14 19:47:32

+0

@Zach:我使用2.5.3版本 – raoulsson 2009-12-14 19:57:29

+0

你如何测试你的应用程序?您是否将SeamT​​est与嵌入式JBoss Embedded服务器一起使用? – 2009-12-14 20:18:16

回答

1

拉乌尔,

虽然我不使用Spring,Seam的的chapter 15在行动的书籍约Spring集成谈判沿着使用Seam。它是免费的,并已更新。

你说

我也试图将元素添加到弹簧bean定义,并试图与@In(“将beanId”)

缝在容器中注入它操作书说

@In注释中使用的EL表达式,#{tournamentManager},在Spring容器中解析为一个等价命名的bean,由委托变量resolv er

您是否必须使用@In(“#{beanId}”)而不是@In(“beanId”),不?

我见过

默认情况下,<缝:组件/ >将创建一个无状态Seam组件带班和名称在bean定义中提供。

<bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype"> 
    <seam:component/> 
</bean> 

而且

<缝的scope属性:如果你希望Spring bean是 在一个特定的Seam范围管理可用于组件/ >。如果指定的Seam范围是除STATELESS以外的其他任何东西,则必须将Spring bean 的范围限定为原型

您是否按照上述方法完成了?

+0

谢谢,我确切地阅读了这篇文章,但它还没有成功(但)... – raoulsson 2009-12-14 19:46:16

+0

是的,我做了所有这些。有EL,没有EL。现在要设置一个SeamT​​est ... – raoulsson 2009-12-15 08:29:22

1

我有一个使用Seam + Spring的项目,当我想向我的Seam组件注入一个Spring bean时,我必须设置@In(create = true),否则我得到一个NullPointerException,你应该尝试它。

0

我得到了和你一样的问题。我严格遵循了“第27章Spring框架集成”。文件。但是我的春豆从未被注入缝部件。最后,我发现我的seam组件中有@BypassInterceptors。通过删除该注释,我的spring bean被成功注入。然后我意识到,依赖注入是由seam BijectionInterceptor处理的。因此,@BypassInterceptors将有效地绕过这个过滤器:)