如何注释injector.getInstance?

How to annotate injector.getInstance?

我想在我的 unitTest 中注入来自 Guice injector 的实例。

我可以使用哪个微分器?

我知道@annotation ctor 参数中使用了机制

但是 junit 不允许带有参数的 ctor。

我应该使用 class fields' @annotation 吗?

 public void setUp() throws Exception {
    RoutingResponseRepository routingResponseRepository = injector.getInstance(RoutingResponseRepository.class);
}

例如

我要

@firstType RoutingResponseRepository

@secondType RoutingResponseRepository

使用Injector.getInstance(Key):

injector.getInstance(Key.get(RoutingResponseRepository.class, firstType.class))

引用绑定时,Guice 在内部使用不可变的 Key 实例,它引用注释状态(绑定注释 class、绑定注释实例或无绑定注释)组合带有类型(class 文字、Type 实例或 TypeLiteral)。匹配这个矩阵,有9种不同的重载Key.get,就是获取这些Key对象的静态工厂方法。提供占用 Class<?> 的重载只是为了方便。

通常,任何时候您想要表示参数化或注释类型(如 getInstancebind),您都可以使用采用 Key 的重载。

对于测试,您可以直接注入您的测试用例实例。然后你可以像在生产代码中一样使用你的注入点:

@Inject
@SecondType 
private RoutingResponseRepository;

@Before
public void setUp() {
    Guice.createInjector().injectMembers(this);
}

不关心类型和键。