假设我们有以下代码:
@Inject
private Collection<SomeKind> myCollection;
我想要的是,解决依赖关系后(我的意思是,所有属于SomeKind类型的类)也可以添加到集合中。我知道我可以注入ServiceLocator,并以编程方式在注册表上搜索实例,然后由我自己将其添加到集合中,我只是想知道这种情况下是否存在通用机制。
最佳答案
我认为您想要的是IterableProvider<SomeKind>
。请参见Documentation。
这是一个Iterable,因此您可以在每个循环的a中使用它
for (SomeKind someKind: someKinds) {
...
}
您可以按名称查找它们
@Inject
IterableProvider<SomeKind> someKinds;
...
SomeKind someKind = someKinds.named("someName").get();
这是一个complete example using Jersey