SpringBoot一個接口多個實現(xiàn)類的調(diào)用方式總結(jié)
更新時間:2024年01月04日 09:57:13 作者:yy_csdn1314
這篇文章主要介紹了SpringBoot一個接口多個實現(xiàn)類的調(diào)用方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
1、指定限定名注入實現(xiàn)類
1.1、定義一個接口
public interface AnimalService {
public void sound();
}1.2、創(chuàng)建多個實現(xiàn)類
@Service("s1")
public class CatService implements AnimalService {
@Override
public void sound() {
System.out.println("喵喵喵");
}
}@Service()
public class DogService implements AnimalService {
@Override
public void sound() {
System.out.println("汪汪汪");
}
}@Service("s3")
public class CattleService implements AnimalService {
@Override
public void sound() {
System.out.println("汪汪汪");
}
}1.3、指定限定名注入實現(xiàn)類
@RunWith(SpringRunner.class)
@SpringBootTest
public class Main {
@Autowired
@Qualifier(value = "s1")
AnimalService animalService1; //正常啟動
//沒有指定bean注入名字的,使用該類首字符小寫的bean的名字
//使用默認的
@Resource(name = "dogService")
AnimalService animalService2; //正常啟動
//通過@Resource注入,根據(jù)@Service指定的名稱區(qū)分
@Resource(name = "s3")
AnimalService animalService3; //正常啟動
@Test
public void test1() {
animalService1.sound();
animalService2.sound();
animalService3.sound();
}
}2、Map名注入實現(xiàn)類
2.1、定義一個接口
public interface AnimalService {
public void sound();
}2.2、創(chuàng)建多個實現(xiàn)類
@Service("s1")
public class CatService implements AnimalService {
@Override
public void sound() {
System.out.println("喵喵喵");
}
}2.3、枚舉
public enum AnimalTypeEnum {
DOG(1, "狗狗", "dogService"),
CAT(2, "貓咪", "catService");
public Integer code;
public String msg;
public String service;
public static AnimalTypeEnum getAnimalTypeEnum (Integer code) {
return (AnimalTypeEnum )Arrays.stream(values()).filter((item) -> {
return item.code.equals(code);
}).findFirst().orElseThrow(() -> {
return new BusinessException("biz animal type is not exist");
});
}
private AnimalTypeEnum (final Integer code, final String msg, final String service) {
this.code = code;
this.msg = msg;
this.service = service;
}
}2.4、指定限定名注入實現(xiàn)類
@RunWith(SpringRunner.class)
@SpringBootTest
public class Main {
@Autowired
Map<String, AnimalService> animalServiceMap;
@Test
public void test1() {
String service = AnimalTypeEnum.getAnimalTypeEnum(1).service;
AnimalService animalService = animalServiceMap.get(service);
animalService.sound();
}
}以上就是SpringBoot一個接口多個實現(xiàn)類的調(diào)用方式的詳細內(nèi)容,更多關(guān)于SpringBoot一個接口多個實現(xiàn)類的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決IntelliJ IDEA創(chuàng)建spring boot無法連接http://start.spring.io/問題
這篇文章主要介紹了解決IntelliJ IDEA創(chuàng)建spring boot無法連接http://start.spring.io/問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
Java獲取HttpServletRequest的三種方法詳解
這篇文章主要介紹了Java獲取HttpServletRequest的三種方法詳解,是一個接口,全限定名稱為Jakarta.Serclet.http.HttpServletRequest2023-11-11
HttpServletRequest接口是Servlet規(guī)范的一員,需要的朋友可以參考下
SpringBoot集成EasyExcel實現(xiàn)百萬級別的數(shù)據(jù)導入導出實踐指南
本文將基于開源項目 springboot-easyexcel-batch 進行解析與擴展,手把手教大家如何在 Spring Boot 2.2.1 中集成 Alibaba EasyExcel,輕松實現(xiàn)百萬級數(shù)據(jù)的導入與導出2025-08-08

