接口 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") //這里使用的是自定義的名字