1、指定限定名注入实现类
1.1、定义一个接口
public interface AnimalService {
1.2、创建多个实现类
public class CatService implements AnimalService { System.out.println("喵喵喵");
public class DogService implements AnimalService { System.out.println("汪汪汪");
public class CattleService implements AnimalService { System.out.println("汪汪汪");
1.3、指定限定名注入实现类
@RunWith(SpringRunner.class) AnimalService animalService1; //正常启动 //没有指定bean注入名字的,使用该类首字符小写的bean的名字 @Resource(name = "dogService") AnimalService animalService2; //正常启动 //通过@Resource注入,根据@Service指定的名称区分 AnimalService animalService3; //正常启动
2、Map名注入实现类
2.1、定义一个接口
public interface AnimalService {
2.2、创建多个实现类
public class CatService implements AnimalService { System.out.println("喵喵喵");
public class DogService implements AnimalService { System.out.println("汪汪汪");
2.3、枚举
public enum AnimalTypeEnum { DOG(1, "狗狗", "dogService"), CAT(2, "猫咪", "catService"); 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) {
2.4、指定限定名注入实现类
@RunWith(SpringRunner.class) Map<String, AnimalService> animalServiceMap; String service = AnimalTypeEnum.getAnimalTypeEnum(1).service; AnimalService animalService = animalServiceMap.get(service);
|