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