2015-10-05 56 views
1

我的Java EE應用程序中有一個Singleton類。 我通過用@ApplicationScoped對類進行註釋並讓CDI處理所有事情來實現此目的。阻止@ApplicationScoped CDI受管bean的手動實例化

我的問題是我是否能防止此類意外手動實例化,因爲CDI要求我有一個非私有無參數的構造函數?

「經典」非CDI解決方案將有一個私人的構造函數,靜態INSTANCE場和返回該實例的靜態工廠方法。

回答

3

你可以用「經典」非CDI你提到的解決方案,然後用@Produces註釋工廠方法(或靜態最終字段)。

+0

我想我必須閱讀'@ Produces'是如何工作的。這個解決方案在任何地方都需要'@ ApplicationScoped'嗎?如果'@ Produces'方法總是返回相同的實例(因爲CDI應該控制實例的創建和銷燬),CDI框架不會混淆? – jhyot

相關問題