1. 首先, Interface1 接口有兩個實現類 Interface1Impl1 和 Interface1Impl2
Interface1 接口:
public interface Interface1 { void fun1(); }
以下是接口的兩個實現類,請注意@service註解的使用方式,這裏給每個實現類標註了不同的名稱,方便在@Resource注入時區別注入
Interface1 接口實現類1:
@Service("s1") public class Interface1Impl1 implements Interface1 { @Override public void fun1() { System.out.println("接口1實現類 ..."); } public void fun2(){ System.out.println("接口1實現類1 fun2 ..."); } }
Interface1 接口實現類2:
@Service("s2") public class Interface1Impl2 implements Interface1 { @Override public void fun1() { System.out.println("接口1實現類 ..."); } public void fun2(){ System.out.println("接口1實現類2 fun2 ..."); } }
2. 通過 @Autowired 和 @Qualifier 配合注入
@Autowired @Qualifier("interface1Impl1") Interface1 interface1; //正常啓動
3. 使用@Resource注入,根據默認類名區分
@Resource(name = "interface1Impl1") Interface1 interface1; //正常啓動
4. 使用@Resource注入,根據@Service指定的名稱區分
@Resource(name = "s1") Interface1 interface1; //正常啓動