课程投入使用后的CDI生命周期回调

时间:2016-12-09 04:12:18

标签: java-ee dependency-injection cdi jta weld

是否有像@PostConstruct这样的CDI回调,但是在该类投入使用后会调用

我有UserDAO注入EntityManager和注入UserBean的EJB UserDAO,这是远程调用的。

调用UserBean.save(u)时,它在事务EJB范围内执行。但注入EntityManager的{​​{1}}与注入时间的交易无关。

如果我在UserDAO中声明一个init方法并用UserDAO注释,那么由于{{1}调用EJB方法时@PostContruct不相同自然。

这一切都是正确的,因为TransactionSynchronizationRegistry回调定义为"初始化托管bean指定CDI框架在依赖注入之后但在放入类之前应调用的生命周期回调方法投入使用。"

但是,如果我在方法@PostConstruct中使用@PostConstruct,则该事务与TransactionSynchronizationRegistry相同。

那么,是否存在一个回调方法/注释,我可以在>将放入服务后使用"?这样我就可以将此方法放在UserDAO.update(u)中,因此我可以在UserBean的任何方法调用之前使用UserDAO

修改 调用我的TransactionSynchronizationRegistry方法时会创建JTA事务。但是在UserDAO userBean.save(u)时,我能够注入@PostContruct的有效实例,但它是状态为UserDAO的另一个事务,另一个是事务ID (与TransactionSynchronizationRegistry的交易不同)。但我想使用STATUS_NO_TRANSACTION userBean.save(u)方法userDAO.save(u)方法中调用@PostConstruct方法的相同事务的一些信息。

PS:英语不是我的主要语言。如果我不够清楚,我很抱歉。

0 个答案:

没有答案