我有一个实现Local接口的EJB 3.0 Session Bean,我也有一个纯粹的POJO。
如何将会话Bean注入POJO而不是手动JNDI通过spring查询到POJO(使用@Resource
和SpringBeanAutowiringInterceptor
)?
有没有办法做到这一点?
答案 0 :(得分:2)
要将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
(如果可用)。或者,您可以选择为这些注释激活单个BeanPostProcessors。
另请参阅Spring论坛上的Spring support for @EJB annotations: example?。
答案 1 :(得分:1)
一种选择是使用诗意命名的LocalStatelessSessionProxyFactoryBean
,它创建一个指向JNDI上的会话EJB的spring bean代理。然后,您可以使用常用的Spring布线技术将此代理连接到您的POJO中。代理bean将实现EJB的相同本地接口。
有关示例,请参阅this section of the Spring manual。