67
比方说,我有一个模块:如何从Guice的注入器中检索带注释的实例?
Module extends AbstractModule
{
@Override
protected void configure()
{
bind(String.class).
annotatedWith(Names.named("annotation")).
toInstance("DELIRIOUS");
}
}
,我要测试的模块,并检查它是否注入在String
场Names.named("annotation")
注释正确的价值,而不必类和领域,而是直接获得价值从注射器:
@Test
public void test()
{
Injector injector = Guice.createInjector(new Module());
// THIS IS NOT GOING TO WORK!
String delirious = injector.getInstance(String.class);
assertThat(delirious, IsEqual.equalTo("DELIRIOUS");
}
我认为值得一提的是原来的解决方案专门用于命名规范。如果您创建了一个Annotation(特定接口@Annotation),那么您只需将该调用作为getMethod特定的: injector.getInstance(Key.get(DesiredObject.class,Annotation.class)); – BoneSmuggler 2016-07-13 19:03:56