cdi示例生产者

3j86kqsm  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(558)

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

@Qualif1
@Prodcues
B qualif1(@Any Instance<B> instances){
    return instances.select(B1.class).get(); // Select instance of B1 which extends B
}

我想知道示例是否已经是bean,或者只有选定的示例是由容器管理的bean?
提前谢谢

eimct9ow

eimct9ow1#

这并不取决于使用 instances ,但在bean的范围内。打电话给 get 就像其他注射点一样:如果你 get 一个原型bean,一个新的bean示例被创建。如果你 get 一个急切的单例-它已经在您调用之前创建 get .
您的问题似乎源于将bean和bean示例混为一谈:前者是定义(在某种意义上,都是由容器“管理的”),后者是示例(在直接意义上是“管理的”)。
抽象的阶梯是这样的:
类->bean->示例
所以“bean”既不是类(尽管在某些项目中每个bean也是类)也不是示例(尽管在某些项目中每个bean也是示例)。
就我个人而言,我责怪spring模糊了这三者之间的界限,因为它鼓励对几乎所有事情都使用渴望的单例。

相关问题