2
我使用Google來獲取CDI bean的上下文引用。我發現了2種方式:獲取Java 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));
}
我的問題是:哪種方式是正確的?如果兩者都是正確的,那麼每一個的上下文使用是什麼?
謝謝!
謝謝你的解釋! – Loc 2014-11-05 14:47:36