【发布时间】:2014-11-04 19:48:16
【问题描述】:
我搜索了获取 CDI bean 上下文引用的方法。我找到了两种方法:
1.使用 beans.iterator()
public static <T> T getReference(BeanManager bm, Class<? extends T> type, Annotation... qualifiers) {
Set<Bean<?>> beans = bm.getBeans(type, qualifiers);
if (beans == null || beans.isEmpty()) {
throw new IllegalArgumentException("Bean not found.");
}
// Using beans.iterator()
Bean<T> bean = (Bean<T>) beans.iterator().next();
return (T) bm.getReference(bean, type, bm.createCreationalContext(bean));
}
2。使用 BeanManager.resolve
public static <T> T getReference(BeanManager bm, Class<? extends T> type, Annotation... qualifiers) {
Set<Bean<?>> beans = bm.getBeans(type, qualifiers);
if (beans == null || beans.isEmpty()) {
throw new IllegalArgumentException("Bean not found.");
}
// Using BeanManager.resolve()
Bean<T> bean = (Bean<T>) bm.resolve(beans);
return (T) bm.getReference(bean, type, bm.createCreationalContext(bean));
}
我的问题是:哪种方式是正确的?如果两者都正确,那么每个的上下文用途是什么?
谢谢!
【问题讨论】:
标签: java jakarta-ee cdi java-ee-6 java-ee-7