[英]What is the difference between @ApplicationScoped and @Singleton scopes in CDI?
[英]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.