2012-07-05 55 views
1

我试图测试一个接口的绑定多次的所有提供者是否都被我的模块正确实例化。为了绑定我的模块,我在Google Guice v3中使用了Multibinder。在Guice中请求所有提供者绑定接口

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

有没有人有这个问题的优雅解决方案?

回答

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){ 
     ...