我正在使用 Guice 3 进行依赖注入。
我有一个特殊的用例,我需要知道接口绑定了什么实现类型。Guice 是否有一种机制可以让我们做到这一点?
我正在使用 Guice 3 进行依赖注入。
我有一个特殊的用例,我需要知道接口绑定了什么实现类型。Guice 是否有一种机制可以让我们做到这一点?
为此,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()));
}
这些绑定是完整的绑定,因此被称为注入器绑定。