0

依存性注入を行うために Guice 3 を使用しています。

インターフェイスにバインドされている実装タイプを知る必要がある特定のユース ケースがあります。これを可能にする Guice のメカニズムはありますか?

4

1 に答える 1

2

そのような目的のために、Guice は Extensions SPI を提供します。

DefaultBindingTargetVisitor を拡張し (選択的なメソッドをオーバーライドする場合)、検査する Visit(Binding バインディング) をオーバーライドする必要があります。

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 に答える