gpt4 book ai didi

java - 在 Guice 中获取接口(interface)的实现类型

转载 作者:行者123 更新时间:2023-12-02 06:59:58 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com