public interface SayHello { public String say(); }
二、準備實現兩個SayHello接口,爲了讓容器在注入時進行區分,先定義兩個Qualifier Hello1和Hello2:
@Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) public @interface Hello1 { }
@Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({TYPE, METHOD, FIELD, PARAMETER}) public @interface Hello2 { }
@Hello1 public class SayHelloImpl1 implements SayHello { @Override public String say() { return "SayHelloImp1"; } }
@Hello2 public class SayHelloImpl2 implements SayHello { @Override public String say() { return "SayHelloImp2"; } }
四、使用Qualifier注入bean。
public class SayHelloTest1 { @Hello1 private SayHello s1; @Hello2 private SayHello s2; @Test public void testSayHello1() { Assert.assertEquals("SayHelloImp1", s1.say()); } @Test public void testSayHello2() { Assert.assertEquals("SayHelloImp2", s2.say()); } }
@Default public class SayHelloDefaultImpl implements SayHello { @Override public String say() { return "SayHelloDefaultImpl"; } }