2010-03-30 43 views
0

我有我的业务豆这样定义:我可以在拦截器上声明生命周期拦截器吗?

@Local 
@Interceptors(BusinessInterceptor.class}) 
public class MyBean implements SomeBean { ... } 

然后我想我BusinessInterceptor使用Spring的SpringBeanAutowiringInterceptor配置:

@Interceptors(SpringBeanAutowiringInterceptor.class) 
public class BusinessInterceptor { 
    @Autowired 
    private SomeSpringBean someSpringBean; 
} 

难道这允许/合法吗?我收到错误(主要是NPE),表明BusinessInterceptor中的字段尚未正确初始化。

回答

1

我怀疑这可以工作。如果我理解你的情况,你基本上有两个DI容器,一个是Spring,另一个是应用程序。服务器本身。每个人管理不同的元素。 BusinessInterceptor由应用程序创建。不知道Spring的服务器--bean没有设置。 (注意,Spring和EJB3现在已经变得非常相似了,你可以使用和Spring相同的功能,Spring的确具有声明式事务,依赖注入和类似于EJB3拦截器的AOP工具(这些是主要的托管特性) 。另一方面,EJB3现在非常轻巧,以至于在EJB3中使用Spring并没有什么令人信服的理由。请参阅Future of enterprise Java:完整堆栈Spring或完整堆栈Java EE。但是这并没有回答这个问题,只是我的一点点题外话:)

+0

+1为少但极其重要的题外话。 – 2010-03-31 06:51:31