请求所有提供者在Guice中绑定接口

时间:2012-07-05 13:25:45

标签: java dependency-injection guice

我正在尝试测试我的模块是否正确实例化了多次绑定的接口的所有提供程序。要在我的模块中绑定,我在Google Guice v3中使用Multibinder。

我找不到一个方法来返回特定接口/类的所有(多个)提供程序。使用getProvider()只返回一个Provider。

有没有人能为这个问题找到优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

一个选项是迭代来自Injector的所有绑定,并检查那些与您预期的接口匹配的绑定。

@Inject void checkBindings(Injector injector){
  for(Binding<?> rawbinding : injector.getBindings().values()){
    if (rawbinding instanceof BindingImpl){
      BindingImpl<?> binding = (BindingImpl<?>)rawbinding;
      if (binding.getKey().getTypeLiteral().getRawType() == MyInterface.class){
        ...