在实例化用户类之后如何调用CDI?

时间:2016-02-13 22:10:11

标签: jsf jsf-2 cdi

我有一个看起来像这样的课程:

@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 将为null。那么如何通过进行注射来获得新的工作实例?

1 个答案:

答案 0 :(得分:1)

Instance界面应该满足您的需求:

Instance<TableView> tableViewInstance;
TableView anotherView = tableViewInstance.get();

但正如评论中所述,您的观点不应该/知道交易和实体经理。