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