Java CDI实例生成器

Java CDI实例生成器,java,cdi,javabeans,java-ee-8,Java,Cdi,Javabeans,Java Ee 8,传递给我的生产者的实例是否代表有效的bean @Qualif1 @Prodcues B qualif1(@Any Instance<B> instances){ return instances.select(B1.class).get(); // Select instance of B1 which extends B } @Qualif1 @线索 B qualif1(@任何实例){ return instances.select(B1.class).get();//选

传递给我的生产者的实例是否代表有效的bean

@Qualif1
@Prodcues
B qualif1(@Any Instance<B> instances){
    return instances.select(B1.class).get(); // Select instance of B1 which extends B
}
@Qualif1
@线索
B qualif1(@任何实例){
return instances.select(B1.class).get();//选择扩展B的B1实例
}
我想知道实例是否已经是bean,或者只有选定的实例是由容器管理的bean


提前感谢

这并不取决于使用
实例
,而是取决于bean的作用域。对
get
的调用与任何其他注入点一样工作:如果
get
一个原型bean,就会创建一个新的bean实例。如果您
get
获得一个渴望的单例-它在您调用
get
之前已经创建好了

您的问题似乎源于将bean和bean实例混为一谈:前者是定义(在某种意义上,它们都是由容器“管理的”),后者是实例(直接意义上是“管理的”)

抽象的阶梯是这样的:

类->bean->实例

所以“bean”既不是一个类(尽管在某些项目中每个bean也是一个类),也不是一个实例(尽管在某些项目中每个bean也是一个实例)

就我个人而言,我指责Spring模糊了这三者之间的界限,因为它鼓励人们在几乎所有事情上使用热切的单身汉