【项目实战】如何在项目中基于 Spring Boot Starter 开发简单的 SDK

什么是SDK

通常在分布式项目中,类和方法是不能跨模块使用的。为了方便开发者的调用,我们需要开发一个简单易用的SDK,使开发者只需关注调用哪些接口、传递哪些参数,就像调用自己编写的代码一样简单。实际上,RPC(远程过程调用)就是为了实现这一目的而设计的。RPC就是追求简单化调用的理想情况。类似的例子是小程序开发或者调用第三方 API,如腾讯云的 API,它们都提供了相应的 SDK。

为什么使用SDK

在此分布式项目中SDK客户端封装了对各API接口的调用方法,通过引入 Starter 的方式直接使用客户端,为用户生成一个可以使用的客户端对象,实现跨模块的对象创建和方法调用,降低了使用成本。

项目实战

SDK结构

1)编写 SDK 版本号:

2)为了使客户端不用手动创建而可直接使用,这里 Starter 采用配置类的形式

java 复制代码
//告诉Spring这是一个配置类
@Configuration
//读取application.yml配置类,并且给配置类加上前缀"myapi.client"
@ConfigurationProperties("myapi.client")
//Lombok注解,用于生成get、set方法
@Data
//用于自动扫描组件,自动注入Bean
@ComponentScan
public class YuApiClientConfig {

    private String accessKey;

    private String secretKey;

    @Bean
    public MyApiClient myApiClient(){
        return new MyApiClient(accessKey,secretKey);
    }
}

3)resource文件下新建META-INF和spring.factories

4)在spring.factories文件下写入配置内容(配置类根路径)

java 复制代码
# spring boot starter
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.myapiclientsdk.YuApiClientConfig

5)上传jar包到Maven中央仓库,具体教程可见【教程】如何上传依赖到maven中央仓库并且引入至pom文件-CSDN博客

6)引入依赖

7)注入客户端对象,调用其方法:

添加配置类:

注入对象:

调用 API 接口方法:

java 复制代码
User user = userService.getLoginUser(request);
        String accessKey = user.getAccessKey();
        String secretKey = user.getSecretKey();
        MyApiClient myApiClient1 = new MyApiClient(accessKey,secretKey);
        Gson gson = new Gson();
        com.example.myapiclientsdk.model.User currentUser = gson.fromJson(userrequestParams, com.example.myapiclientsdk.model.User.class);
        String userNameByPost = myApiClient1.getUserNameByPost(currentUser);
        return ResultUtils.success(userNameByPost);

这样一来,用户就可以通过引入依赖像使用本地方法一样调用SDK中的接口了。

相关推荐
IT_陈寒4 分钟前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
段一凡-华北理工大学8 分钟前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
码事漫谈1 小时前
1999年的电商前夜和2026年的AI前夜 历史押韵但从不重复
后端
Conan在掘金1 小时前
鸿蒙报错速查:arkts-strict-typing Property does not exist on type 'object',object 装函数就炸,根因 + 真解法
后端
颜酱1 小时前
01 | 骨架搭建:FastAPI + Vue 跑通第一个 SSE 流式问答
前端·人工智能·后端
程序员cxuan2 小时前
Grok Build 被众人唾骂,结果老马把它开源了
人工智能·后端·程序员
莫逸风2 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
从零开始的代码生活_2 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
Conan在掘金3 小时前
�鸿蒙报错速查:Cannot find name 'require',禁用 require(),根因 + 真解法
后端
隔窗听雨眠3 小时前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生