2011-09-06 110 views
3

我想向EJB添加依赖关系。我如何使用Spring来做到这一点?依赖对象是一个通用服务对象。根据下面的代码,我想连接myDependency而不必使用'new'。 EJB以weblogic运行。向EJB添加依赖关系

@Stateless(mappedName = "MyBean") 
public class MyBean implements MyBeanRemote, MyBeanLocal { 

    @EJB(name = "MyOtherBean") 
    private MyOtherBean myOtherBean; 


    private MyDependency myDependency; 
    ... 

} 

回答

5

这在Spring documentation被很好地描述:

对于EJB 3会话bean和消息驱动Bean,Spring提供了一个方便的 拦截解析Spring 2.5的@Autowired 注解中EJB组件类: org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor。 这个拦截器可以通过EJB组件类中的@Interceptors批注或者EJB部署描述符中的拦截器绑定XML元素 应用于 。

@Stateless 
@Interceptors(SpringBeanAutowiringInterceptor.class) 
public class MyFacadeEJB implements MyFacadeLocal { 

    // automatically injected with a matching Spring bean 
    @Autowired 
    private MyComponent myComp; 

    // for business method, delegate to POJO service impl. 
    public String myFacadeMethod(...) { 
     return myComp.myMethod(...); 
    } 
    ... 
} 

无状态EJB和Spring bean的,但是,提供更多或更少相同的可能性。将它们混合在一起似乎是不必要的复杂。

+0

谢谢你。想知道如果我可以添加依赖项而不将它作为spring bean,或者试图指出其他设计问题? MyDependency类所属的模块是其他模块使用的实用程序模块。 MyDependency是一个调用第三方服务的util类。 – striker77

+0

Spring只能够注入Spring bean。 –

+0

我最终用新的EJB取代了MyDependency。这避免了EJB和Spring组件的混合,因为新的EJB提供了一个单独的“服务”,所以是合理的。 – striker77