springboot 将实现同一接口的Service注入到Map当中 方法五

同一接口

public interface SayService {

    public String hello();
}

接口的不同实现

@Service("sayOne")
public class SayServiceOne implements SayService {
    @Override
    public String hello() {
        System.out.println("say one");
        return "say one";
    }
}
@Service("sayTwo")
public class SayServiceTwo implements SayService {
    @Override
    public String hello() {
        System.out.println("say two");
        return "say two";
    }
}

装载到map,作为bean注入到spring中


@Component
public class MapConfig {


     @Bean(name="actServiceMap")
    public Map<String, SayService> getQueryServiceMap(){
        return  new HashMap<>();
        
    }
}

或者自定义key

@Component
public class MapConfig {

    @Resource(name = "sayOne")
    private SayService sayOne;

    @Autowired
    @Qualifier("sayTwo")
    private SayService sayTwo;

    @Bean("sayServiceMap")
    public Map<String, SayService> geneSayServiceMap(){
        Map<String, SayService> sayServiceMap = new HashMap<>();
        sayServiceMap.put("sayOne自定义", sayOne);
        sayServiceMap.put("sayTwo自定义", sayTwo);
        return sayServiceMap;
    }
}

或者这样写也可

@Component
public class ActMap {

    @Bean(name="actServiceMap")
    public Map<String, ActService> geneActServiceMap(@Qualifier("actOne") ActService actOne,
                                                     @Qualifier("actTwo") ActService actTwo){
        Map<String, ActService> map = new HashMap<>();
        map.put("actOne111", actOne);
        map.put("actTwo2222", actTwo);
        return map;
    }
}

测试

@RestController
@RequestMapping("/beanTest")
public class BeanTest {

    @Resource(name="sayServiceMap")
    Map<String, SayService> sayServiceMap;

    @GetMapping("/say")
    public String say(){
        SayService sayOne = sayServiceMap.get("sayOne");
        SayService sayTwo = sayServiceMap.get("sayTwo");

        return sayOne.hello() + "\n" + sayTwo.hello();
    }
}

 

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以使用一些代码生成工具来自动生成Spring Boot的ServiceMapper类。其中,常用的工具包括MyBatis Generator和Spring Initializr。 1. 使用MyBatis Generator: - 在你的项目中添加MyBatis Generator的依赖。你可以在项目的`pom.xml`文件中添加如下依赖: ```xml <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> ``` - 创建一个配置文件(如`generatorConfig.xml`),配置生成器的参数和规则。你可以指定需要生成的表、生成文件的输出路径、生成的ServiceMapper的包名等等。以下是一个示例配置文件的基本结构: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <context id="default" targetRuntime="MyBatis3"> <!-- 配置数据源 --> <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/mydatabase" userId="username" password="password"> </jdbcConnection> <!-- 配置生成规则 --> <javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"/> <sqlMapGenerator targetPackage="com.example.mapper" targetProject="src/main/resources"/> <javaClientGenerator targetPackage="com.example.mapper" targetProject="src/main/java" type="XMLMAPPER"/> <!-- 配置要生成的表 --> <table tableName="user" domainObjectName="User"/> </context> </generatorConfiguration> ``` - 运行生成器。你可以在命令行中执行以下命令: ``` java -jar mybatis-generator-core-x.x.x.jar -configfile generatorConfig.xml ``` - 生成的ServiceMapper类将会自动输出到指定的包路径中。 2. 使用Spring Initializr: - 打开Spring Initializr的网页(https://start.spring.io/)。 - 在页面上选择你的项目的基本配置,例如项目的名称、构建工具、语言等等。 - 在"Dependencies"部分搜索并添加"Spring Data JPA"和"Spring Web"依赖。 - 点击"Generate"按钮,下载生成的项目压缩包。 - 解压项目压缩包并导入到你的IDE中。 - 在你的项目中创建实体类(Entity)、Repository接口(用于数据库操作)和Service类(用于业务逻辑)。 - 在Service类中使用`@Autowired`注解注入Repository,并编写对应的业务方法。 以上是两种常用的方法来生成Spring Boot的ServiceMapper类。你可以根据自己的需求选择合适的方式。希望能对你有所帮助!如有任何问题,请随时询问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值