如何注释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.get(RoutingResponseRepository.class, firstType.class))
引用绑定时,Guice 在内部使用不可变的 Key 实例,它引用注释状态(绑定注释 class、绑定注释实例或无绑定注释)组合带有类型(class 文字、Type 实例或 TypeLiteral)。匹配这个矩阵,有9种不同的重载Key.get
,就是获取这些Key对象的静态工厂方法。提供占用 Class<?>
的重载只是为了方便。
通常,任何时候您想要表示参数化或注释类型(如 getInstance
或 bind
),您都可以使用采用 Key 的重载。
对于测试,您可以直接注入您的测试用例实例。然后你可以像在生产代码中一样使用你的注入点:
@Inject
@SecondType
private RoutingResponseRepository;
@Before
public void setUp() {
Guice.createInjector().injectMembers(this);
}
不关心类型和键。
我想在我的 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.get(RoutingResponseRepository.class, firstType.class))
引用绑定时,Guice 在内部使用不可变的 Key 实例,它引用注释状态(绑定注释 class、绑定注释实例或无绑定注释)组合带有类型(class 文字、Type 实例或 TypeLiteral)。匹配这个矩阵,有9种不同的重载Key.get
,就是获取这些Key对象的静态工厂方法。提供占用 Class<?>
的重载只是为了方便。
通常,任何时候您想要表示参数化或注释类型(如 getInstance
或 bind
),您都可以使用采用 Key 的重载。
对于测试,您可以直接注入您的测试用例实例。然后你可以像在生产代码中一样使用你的注入点:
@Inject
@SecondType
private RoutingResponseRepository;
@Before
public void setUp() {
Guice.createInjector().injectMembers(this);
}
不关心类型和键。