SpringBoot一个接口多个实现类的调用方式总结

 更新时间:2024年01月04日 09:57:13   作者:yy_csdn1314  
这篇文章主要介绍了SpringBoot一个接口多个实现类的调用方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1、指定限定名注入实现类

1.1、定义一个接口

public interface AnimalService {
    public void sound();
}

1.2、创建多个实现类

@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、指定限定名注入实现类

@RunWith(SpringRunner.class)
@SpringBootTest
public class Main {
    @Autowired
    @Qualifier(value = "s1")
    AnimalService animalService1;    //正常启动
 
    //没有指定bean注入名字的,使用该类首字符小写的bean的名字
    //使用默认的
    @Resource(name = "dogService")
    AnimalService animalService2;    //正常启动
 
    //通过@Resource注入,根据@Service指定的名称区分
    @Resource(name = "s3")
    AnimalService animalService3;    //正常启动
 
    @Test
   public void test1() {
        animalService1.sound();
 
        animalService2.sound();
 
        animalService3.sound();     
    }
}

2、Map名注入实现类

2.1、定义一个接口

public interface AnimalService {
    public void sound();
}

2.2、创建多个实现类

@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、指定限定名注入实现类

@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一个接口多个实现类的调用方式的详细内容,更多关于SpringBoot一个接口多个实现类的资料请关注脚本之家其它相关文章!

相关文章

  • SpringMVC之@requestBody的作用及说明

    SpringMVC之@requestBody的作用及说明

    这篇文章主要介绍了SpringMVC之@requestBody的作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java Map.getOrDefault方法详解

    Java Map.getOrDefault方法详解

    Map.getOrDefault(Object key, V defaultValue)是Java中Map接口的一个方法,用于获取指定键对应的值,如果键不存在,则返回一个默认值,这篇文章主要介绍了Java Map.getOrDefault方法详解,需要的朋友可以参考下
    2024-01-01
  • Spring Boot实现STOMP协议的WebSocket的方法步骤

    Spring Boot实现STOMP协议的WebSocket的方法步骤

    这篇文章主要介绍了Spring Boot实现STOMP协议的WebSocket的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Java中的AQS框架原理详解

    Java中的AQS框架原理详解

    这篇文章主要介绍了Java中的AQS框架原理详解,AQS核心思想是,如果被请求的共享资源(state)空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态,需要的朋友可以参考下
    2023-12-12
  • IDEA code template配置和参数方式

    IDEA code template配置和参数方式

    这篇文章主要介绍了IDEA code template配置和参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教<BR>
    2024-01-01
  • idea无法切换分支报错问题及解决

    idea无法切换分支报错问题及解决

    这篇文章主要介绍了idea无法切换分支报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot项目yml配置文件不自动提示解决方案

    SpringBoot项目yml配置文件不自动提示解决方案

    这篇文章主要介绍了SpringBoot项目配置文件.yaml/.yml文件编写时没有自动提示的解决方案,文章通过图文结合的方式给大家讲解的非常详细,需要的朋友可以参考下
    2024-06-06
  • 关于log4j漏洞修复解决方案及源码编译

    关于log4j漏洞修复解决方案及源码编译

    Log4j 是Apache为Java提供的日志管理工具。他与System.out.println()的作用相似,用来跟踪、调试、维护程序。这篇文章主要介绍了关于log4j漏洞修复解决方案及源码编译,需要的朋友可以参考下
    2021-12-12
  • Java计算黑洞数的方法示例

    Java计算黑洞数的方法示例

    这篇文章主要介绍了Java计算黑洞数的方法,简单描述了黑洞数的概念及具体计算方法,涉及java数值运算相关操作技巧,需要的朋友可以参考下
    2017-12-12
  • IDEA创建MyBatis配置文件模板的方法步骤

    IDEA创建MyBatis配置文件模板的方法步骤

    这篇文章主要介绍了IDEA创建MyBatis配置文件模板的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论