我已经定义了EJB(通过使用Java EE API 7),如下所示:
@Stateless
@LocalBean
public class Foo {
@Inject
private Boo boo;
public void doFoo(Collection<Object> c) {
boo.doSomething(c);
}
}
和:
@Named
@RequestScope
public class Boo() {
public void doSomething(Collection<Object> c){
// Do something...
}
}
在Spring中是否可以将
Foo
类的实例作为EJB注入?如果是,怎么办? 最佳答案
您可以使用注入拦截器。
对于EJB 3会话Bean和消息驱动Bean,Spring提供了一个
方便的拦截器,可解决Spring 2.5的@Autowired
EJB组件类中的注释:
org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor。
可以通过@Interceptors
应用此拦截器
EJB组件类中的注释,或通过
EJB部署描述符中的拦截器绑定XML元素。
代码示例:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class Foo {
@Autowired
private Boo boo;
}
有关更多信息,请参考18.3.2. EJB 3 injection interceptor
如果需要从Spring访问EJB,则可以在spring-context.xml配置中像下面的示例一样定义bean。
<jee:local-slsb id="myComponent" jndi-name="ejb/fooBean"
business-interface="com.Foo"/>
您可以在第18.2.2节中获得有关它的更多信息。访问以上引用的本地SLSB。