我看到它的方式,有三種方法來獲得到另一個bean的引用:獲取對其他託管bean的引用的慣用方法是什麼?
- 使用CDI,我可以
@Inject
一個叫豆。這有缺點,即CDI註釋不能與臉部註釋混合,因此我不能再使用@ViewScoped
。 - 使用
@ManagedProperty
似乎是理想的,除了我必須介紹一個公共setter的工作,這傷害封裝。 我可以使用這樣的事情(在this answer建議):
@SuppressWarnings("unchecked") public static <T> T findBean(String beanName) { FacesContext context = FacesContext.getCurrentInstance(); return (T) context.getApplication().evaluateExpressionGet( context, "#{" + beanName + "}", Object.class); }
我可以使用此方法在我
@PostConstruct
初始化屬性。這沒有上面的缺點,但似乎有點複雜。爲什麼我必須爲框架應該提供的東西編寫一個輔助方法?
我的問題是,我應該使用哪三種?此外,請隨時糾正我在上面的描述中可能提到的任何誤解,或者提出其他更優雅的方法來實現這一目標。
看到我的更新和jan groth的回答。 – Bozho