gpt4 book ai didi

java - 注入(inject)实现相同接口(interface)的 bean 列表

转载 作者:行者123 更新时间:2023-12-04 16:26:21 27 4
gpt4 key购买 nike

假设我有以下界面

public interface Handler {
void handle(Object o);
}
和实现
public class PrintHandler implements Handler {
void handle(Object o) {
System.out.println(o);
}
}
public class YetAnotherHandler implements Handler {
void handle(Object o) {
// do some stuff
}
}
我要全部注入(inject) Handler子类到某个类
public class Foo {
private List<Handler> handlers;
}
如何使用 Quarkus 实现这一目标?

最佳答案

需要为@ApplicationScoped 标记所有实现,例如:

@ApplicationScoped
public class PrintHandler implements Handler {
public String handle() {
return "PrintHandler";
}
}
在要注入(inject)所有实现的类中,使用
@Inject
Instance<Handler> handlers;
Instance进口自 javax.enterprise.inject.Instance;handlers变量将具有 Handler 的所有实现界面。 javax.enterprise.inject.Instance还实现了 Iterable所以你可以迭代它并调用所需的方法。
@Inject
Instance<Handler> handlers;

@GET
@Produces(MediaType.TEXT_PLAIN)
public List<String> handle() {
List<String> list = new ArrayList<>();
handlers.forEach(handler -> list.add(handler.handle()));
return list;
}

关于java - 注入(inject)实现相同接口(interface)的 bean 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63080232/

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