我正在使用 Guice 3 进行依赖注入(inject)。
我有一个特定的用例,我需要知道什么实现类型已绑定(bind)到接口(interface)。 Guice 是否有一种机制可以让我们做到这一点?
最佳答案
为此目的,Guice 提供了扩展 SPI。
您需要扩展 DefaultBindingTargetVisitor(如果您希望覆盖选择性方法)并覆盖您希望检查的访问(Binding 绑定(bind))。
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);
}
}
现在,我们需要注入(inject)器来访问绑定(bind)。
for(Binding<?> binding : injector.getBindings().values()){
System.out.println(binding.acceptTargetVisitor(new MyBindingsVisitor()));
}
这些绑定(bind)是完整的绑定(bind),因此称为注入(inject)器绑定(bind)。
关于java - 在 Guice 中获取接口(interface)的实现类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800810/