最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

最新評論

五华县| 三门县| 南溪县| 合川市| 砚山县| 荥阳市| 普宁市| 辉县市| 博爱县| 察雅县| 平顺县| 桂东县| 中西区| 滁州市| 田东县| 哈尔滨市| 剑川县| 连江县| 北海市| 仙游县| 贡觉县| 山丹县| 房山区| 翼城县| 东山县| 莱芜市| 霍城县| 紫云| 临漳县| 图们市| 响水县| 宿松县| 庆元县| 如东县| 舒兰市| 乌兰察布市| 宁陕县| 且末县| 牟定县| 北海市| 来安县|