繁体   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