簡體   English   中英

CDI @New on @Singleton對象。 它能做什么?

[英]CDI @New on @Singleton objects. What it does?

我正在嘗試定義CDI生產者以注入對象的一個​​或另一個實例。

這是生產者的代碼:

@Produces
public static MyRepository getMyRepository(@New MyCacheRepository cache, 
                                                                @New MyNormalRepository db) {

    if(conditions) {
        return cache;
    }

    return db;

}

MyCacheRepository聲明為@javax.inject.Singleton 是CDI在這種情況下,推崇單身狀態,或者它會創建一個@New的實例MyCacheRepository當需要它?

同樣根據文檔,“具有作用域@Singleton的Bean沒有代理對象。客戶端直接引用單例實例。” 知道這一點,您應該能夠通過檢查注入的對象的身份並將其與不使用@New的位置進行比較來為自己找到答案。

您也可以只將@PostConstruct方法添加到@Singleton中,看看它是否被調用過兩次。

順便說一句,文檔警告@New已被棄用:“ @New限定符在CDI 1.1中已棄用。鼓勵CDI應用程序注入@Dependent范圍內的bean。”

也可以看看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM