0

我正在使用 Guice 3 进行依赖注入。

我有一个特殊的用例,我需要知道接口绑定了什么实现类型。Guice 是否有一种机制可以让我们做到这一点?

4

1 回答 1

2

为此,Guice 提供了扩展 SPI。

您需要扩展 DefaultBindingTargetVisitor(如果您希望覆盖选择性方法)并覆盖您希望检查的访问(绑定绑定)。

public class MyBindingsVisitor extends DefaultBindingTargetVisitor<Object, String>{

    public String visit(InstanceBinding<? extends Object> binding){
        Key<? extends Object> key = binding.getKey();
            System.out.println("Key :" + key.getTypeLiteral());
            System.out.println("Annotation : " + key.getAnnotation());
            System.out.println("Source : " + binding.getSource());
            System.out.println("Instance : "+binding.getInstance().toString());
            return visitOther(binding);
    }
}

现在,我们需要注入器来访问绑定。

for(Binding<?> binding : injector.getBindings().values()){
    System.out.println(binding.acceptTargetVisitor(new MyBindingsVisitor()));
}

这些绑定是完整的绑定,因此被称为注入器绑定。

于 2013-06-13T10:21:04.717 回答