【发布时间】:2010-12-31 08:13:00
【问题描述】:
我有一个 EJB 3.0 会话 Bean,它实现了本地接口,我也有一个纯 POJO。
如何将会话 Bean 注入 POJO,而不是通过 spring 手动 JNDI 查找 POJO(使用 @Resource 和 SpringBeanAutowiringInterceptor)?
有什么办法吗?
【问题讨论】:
标签: java spring jakarta-ee ejb-3.0 ejb
我有一个 EJB 3.0 会话 Bean,它实现了本地接口,我也有一个纯 POJO。
如何将会话 Bean 注入 POJO,而不是通过 spring 手动 JNDI 查找 POJO(使用 @Resource 和 SpringBeanAutowiringInterceptor)?
有什么办法吗?
【问题讨论】:
标签: java spring jakarta-ee ejb-3.0 ejb
要将 EJB3 注入 POJO(可能是 since Spring 2.5),我认为您应该使用 @EJB 而不是 @Resource。引用Spring EJB and JPA(通读,有很多例子):
别忘了补充:
<context:annotation-config/>它允许在 bean 类中检测各种注解:Spring 的
@Required和@Autowired,以及 JSR 250 的@PostConstruct、@PreDestroy和@Resource(如果可用)、JAX-WS 的@WebServiceRef(如果可用)、EJB3 的@EJB(如果可用)和 JPA 的@PersistenceContext和@PersistenceUnit(如果可用)。或者,您可以选择为这些注释激活单独的 BeanPostProcessor。
还可以查看 Spring 论坛上的 Spring support for @EJB annotations: example?。
【讨论】:
一种选择是使用富有诗意的LocalStatelessSessionProxyFactoryBean,它创建一个spring bean 代理,指向JNDI 上的会话EJB。然后,您可以使用通常的 Spring 连接技术将此代理连接到您的 POJO。代理 bean 将实现与您的 EJB 相同的本地接口。
有关示例,请参阅 this section of the Spring manual。
【讨论】: