接口 ITestServer有兩個實現類TestImpl1,TestImpl2
ITestServer接口
public interface ITestServer {
void showClassName();
}
TestImpl1實現類
@Service("TestImpl1")
public class TestImpl1 implements ITestServer {
@Override
public void showClassName() {
System.out.println("test1");
}
}
TestImpl2實現類
@Service("TestImpl2")
public class TestImpl2 implements ITestServer {
@Override
public void showClassName() {
System.out.println("test2");
}
}
測試類如下
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestImpl2Test {
@Autowired
@Qualifier("testImpl2")
ITestServer iTestServer;
@Test
public void test(){
iTestServer.showClassName();
}
}
注入方式分析
1.當不在@service后面給定bean名字的時候,通過 @Autowired 和 @Qualifier 配合注入
@Autowired
@Qualifier("testImpl1") //次處注意不給定bean名字的時候,spring默認把當前類首字母轉小寫后做為bean的名字
2.使用@Resource注入,根據默認類名區分
@Resource(name = "testImpl1")
3.使用@Resource注入,根據@Service指定的名稱區分
@Resource(name = "TestImpl1") //這里使用的是自定義的名字
