gpt4 book ai didi

jakarta-ee - 使用 CDI 注入(inject)所有相同类型的 bean

转载 作者:行者123 更新时间:2023-12-04 13:58:38 28 4
gpt4 key购买 nike

假设我们有一个包 foos包含类,它们都实现了一些 IFoo .

我们还有一个类,Baz其中包含一个数据成员 List<IFoo> fooList .
是否可以动态注入(inject)所有这些 IFoo分类到 fooList ?

顺便问一下,这是一种常见的做法吗? (我是 DI 概念的新手)

最佳答案

使用 javax.enterprise.inject.Instance接口(interface)动态获取Foo的所有实例:

import javax.annotation.PostConstruct;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;

public class Baz {

@Inject
Instance<Foo> foos;

@PostConstruct
void init() {
for (Foo foo : foos) {
// ...
}
}
}

这完全有道理,例如如果要合并多个服务提供者实现的结果。你会找到一个很好的学习例子 here .

也可以看看:
  • JSR-000346 Contexts and Dependency Injection for JavaTM EE 1.2 ,
    第 5.6 节。程序化查找
  • 关于jakarta-ee - 使用 CDI 注入(inject)所有相同类型的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35382196/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com