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