一個接口多個實現類的Spring注入方式


1. 首先, Interface1 接口有兩個實現類 Interface1Impl1 和 Interface1Impl2

Interface1 接口:

package com.example.service;

/**
 * Created by liuzh on 2018-05-29.
 * 接口1
 */
public interface Interface1 {
    void fun1();
}

以下是接口的兩個實現類,請注意@service注解的使用方式,這里給每個實現類標注了不同的名稱,方便在@Resource注入時區別注入

Interface1 接口實現類1:

@Service("s1")
public class Interface1Impl1 implements Interface1 {
@Override
public void fun1() {
System.out.println("接口1實現類 ...");
}
public void fun2(){
System.out.println("接口1實現類1 fun2 ...");
}
}

Interface1 接口實現類2:

@Service("s2") 
public class Interface1Impl2 implements Interface1 {
@Override
public void fun1() {
System.out.println("接口1實現類 ...");
}

public void fun2(){
System.out.println("接口1實現類2 fun2 ...");
}
}

2. 通過 @Autowired 和 @Qualifier 配合注入

@Autowired
@Qualifier("interface1Impl1")
Interface1 interface1;    //正常啟動

3. 使用@Resource注入,根據默認類名區分

@Resource(name = "interface1Impl1")
Interface1 interface1;    //正常啟動


4. 使用@Resource注入,根據@Service指定的名稱區分

@Resource(name = "s1")
Interface1 interface1;    //正常啟動

 



  



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM