如何从Guice的注入器中检索带注释的实例?
比方说,我有一个模块:
Module extends AbstractModule { @Override protected void configure() { bind(String.class). annotatedWith(Names.named("annotation")). toInstance("DELIRIOUS"); } }
我想testing模块,并检查它是否注入了Names.named("annotation")
注释的String
字段中的正确值,而没有类和字段,但直接从注入器获取值:
@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"); }
injector.getInstance(Key.get(String.class, Names.named("annotation")));
我正在使用以下方法
public <T> T getInstance(Class<T> type, Class<? extends Annotation> option) { final Key<T> key = Key.get(type, option); return injector.getInstance(key); }
为了这。 一般来说,你仍然有创build注释实例的问题,但是在这里Names.named("annotation")
起作用。