我需要将一个Spring bean注入Seam上下文。除非我将spring bean声明为EJB,否则我无法将其注入到其他由seam管理的组件中。但是当我这样做时,所有弹簧注入的字段都是无用的,因为Seam在运行时创建了新的实例。
我还尝试将<seam:component/>
元素添加到spring bean定义中,并尝试将其注入到目标类中带有@In("beanId")
注释的容器中,但我总是以NullpointerException结束。
修改
我阅读了在线文章并按照他们的说法行事。我的弹簧组件也被添加到接缝上下文中(我可以说,因为当我在接缝中定义一个具有相同ID的时候,它会抱怨)。看起来@In
没有发现....
答案 0 :(得分:3)
您是否阅读过this chapter?它应该告诉你到底要做什么。
答案 1 :(得分:1)
拉乌尔,
虽然我没有将Seam与Spring一起使用,但是chapter 15的Seam In Action书籍谈到了Spring集成。它是免费的,并且已更新。
你说过
我还尝试将元素添加到spring bean定义中并尝试将其注入容器中,并使用@In(“beanId”)
Seam in Action书中说
@In注释中使用的EL表达式#{tournamentManager}解析为Spring容器中等效命名的bean,由委托变量解析器提供
您是否必须使用@In(“#{beanId}”)而不是@In(“beanId”),不是吗?
我见过
默认情况下,&lt; seam:component /&gt;将在bean定义中创建一个STATELESS Seam组件,其中包含类和名称。
<bean id="someSpringBean" class="SomeSpringBeanClass" scope="prototype">
<seam:component/>
</bean>
和
&lt; seam:component /&gt;的范围属性如果你想要Spring bean,可以使用它 在特定的Seam范围内管理。如果是,则必须将Spring bean 限定为原型 指定的接缝范围不是STATELESS 。
你上面做过吗?
答案 2 :(得分:1)
我有一个使用Seam + Spring的项目,当我想将Spring bean注入我的Seam组件时,我必须设置@In(create = true),否则我会得到一个NullPointerException,你应该尝试一下。
答案 3 :(得分:0)
我遇到了和你一样的问题。我严格遵循seam ref中的“Chapter 27. Spring Framework integration”。文献。但我的春豆从来没有注入接缝部件。最后,我发现我的接缝组件中有@BypassInterceptors。通过删除该注释,我的spring bean被成功注入。然后我意识到,依赖注入由接缝BijectionInterceptor处理。因此,@ BypassInterceptors将有效地绕过这个过滤器:)