一个接口多个实现类的spring注入方式


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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM