Guice使用特定的@BindingAnnotation获取所有绑定

时间:2016-01-21 16:10:41

标签: guice

我想在模块配置之后以某种方式扫描绑定并获得实现特定接口的实现。这些实现使用@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;

我不想在模块定义中使用额外的多重绑定配置来保持定义简单。

1 个答案:

答案 0 :(得分:1)

您可以使用Injector.getAllBindings来检索Injector知道的所有绑定。然后,您可以使用Key.getAnnotationType()查找具有特定@BindingAnnotation的内容。