【发布时间】:2016-05-24 23:29:24
【问题描述】:
我有一个如下所示的课程:
@Named
public class TableView {
@PersistenceContext protected EntityManager em;
@Resource protected UserTransaction utx;
当然,我可以像这样在构建我的 bean 期间获得一个实例:
@Inject private TableView view;
我相信是 CDI 负责填写 EntityManager 和 UserTransaction。但是,在我的用户类被实例化后,我有时想要另一个 TableView 实例,那么我该如何获得它呢?很明显
TableView anotherView = new TableView();
不起作用,因为 em 和 utx 将为空。那么如何通过执行的注入获得一个新的工作实例呢?
【问题讨论】:
-
此链接可能会解决您的问题.. stackoverflow.com/questions/25153624/…
-
@Ankit 这很有趣,但并不完全做到这一点。我正在寻找一个运行时 API 来实例化 bean。
-
接口
Instance和方法get()。Instance<TableView> tableViewInstance; TableView newInstance = tableViewInstance.get(); -
@Geinmachi 这似乎就是我想要的。我会尝试一下。如果您想将其发布为答案,我会在验证后将其标记为。
-
什么“用户等级”? ...但是,您的 VIEW 中需要 EM 和 UT 这一事实表明您的应用程序中存在更基本的设计问题。