我想在模块配置之后以某种方式扫描绑定并获得实现特定接口的实现。这些实现使用@BindingAnnotation进行标记。
定义如下:
public interface Provider {}
@BindingAnnotation @Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface EchoService {
}
class Module extends AbstractModule {
void configure() {
bind(Provider.class).annotatedWith(EchoService.class).toInstance(new Provider(){...}
....
}
}
in clases:
@Inject @EchoService Provider provider;
我不想在模块定义中使用额外的多重绑定配置来保持定义简单。
答案 0 :(得分:1)
您可以使用Injector.getAllBindings来检索Injector
知道的所有绑定。然后,您可以使用Key.getAnnotationType()查找具有特定@BindingAnnotation
的内容。