一個接口多個實現類的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