本文介紹了如何在CDI 1.2中創建單例的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我使用的是Weld 2.3.5,它支持CDI 1.2。我遇到了一個問題,用@javax.inject.Singleton
注釋的CDI Bean被容器(bean-discovery-mode="annotated"
)忽略。
搜索后,仍然找不到有關單身人士和CDI 1.2的信息。有誰能解釋一下這個情況,并舉例說明如何用CDI 1.2制作單例CDI Bean。
推薦答案
使用Bean發現模式annotated
,cdi將只拾取帶有所謂Bean定義注釋的Bean。如您所料,spec clearly defines these和@Singleton
不在其中。
要使您的單例可識別,最簡單的方法是使用發現模式all
,但我想您應該避免這種情況。在這種情況下,也許可以使用擴展注冊您的Singleton的注釋類型-CDI應該能夠從那里拾取。
話說回來,CDI@Singleton
的使用非常有限/特定,因為它是一個非代理偽作用域。在大多數情況下,@ApplicationScoped
將完全按照您的要求執行,因此請確保在執行任何額外工作之前考慮這一點。
這篇關于如何在CDI 1.2中創建單例的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,