0
我有一種情況,我需要在大約40個實例中將接口I綁定到類A,但只在其他兩個實例中將其綁定到類B.我當然可以命名它,或者在所有42個案例中對它進行註釋,但是如果我只能註釋2個例外,它會更加乾淨。是否有可能特別針對所有沒有註釋的實例?Guice:綁定沒有註釋的參數
我有一種情況,我需要在大約40個實例中將接口I綁定到類A,但只在其他兩個實例中將其綁定到類B.我當然可以命名它,或者在所有42個案例中對它進行註釋,但是如果我只能註釋2個例外,它會更加乾淨。是否有可能特別針對所有沒有註釋的實例?Guice:綁定沒有註釋的參數
你不必針對那些需要A實現的注入點 - 你只需要爲它們寫一個綁定。回想一下,Guice中的每個綁定都以Key
表示,並確保爲兩種情況都添加一個綁定。這樣,任何I
沒有綁定註釋得到A
和任何I
正確註釋得到B
。
static interface I {}
static class A implements I {}
static class B implements I {}
static class C {
@Inject I a;
@Inject @Named("b") I b;
}
static class Module extends AbstractModule {
@Override
protected void configure() {
bind(I.class).to(A.class);
bind(I.class).annotatedWith(Names.named("b")).to(B.class);
}
}
@Test
public void test() {
Injector i = Guice.createInjector(new Module());
C c = i.getInstance(C.class);
assertThat(c.a, is(instanceOf(A.class)));
assertThat(c.b, is(instanceOf(B.class)));
}
作爲興趣點,在hk2中,您可以專門@注入一些不符合特定註釋條件的東西。請參閱https://hk2.java.net/2.4.0-b06/apidocs/org/glassfish/hk2/api/Unqualified.html。我們不時發現這樣的事情很有用 – jwells131313 2014-12-01 19:47:15