我定义了我的业务bean:
@Local
@Interceptors(BusinessInterceptor.class})
public class MyBean implements SomeBean { ... }
然后我希望我的BusinessInterceptor
配置为Spring SpringBeanAutowiringInterceptor
:
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class BusinessInterceptor {
@Autowired
private SomeSpringBean someSpringBean;
}
这是允许/合法吗?我收到错误(主要是NPE),表明BusinessInterceptor
中的字段尚未正确初始化。
答案 0 :(得分:1)
我怀疑这可行。如果我很了解你的场景,你基本上有两个DI容器,一个是Spring,另一个是应用程序。服务器本身。每个人管理不同的元素。 BusinessInterceptor
由应用创建。不知道Spring的服务器 - 然后没有设置@Autowired
bean。
(请注意,Spring和EJB3现在变得非常相似。您可以使用与Spring相同的功能.Spring确实具有声明式事务,依赖注入和类似于EJB3拦截器的AOP工具(这些是主要的托管功能)。另一方面,EJB3现在非常轻量级,因此没有真正令人信服的理由将Spring与EJB3一起使用。请参阅Future of enterprise Java:完整堆栈Spring或完整堆栈Java EE。但这不能回答这个问题,并且只是我的一点点离题:)