【项目实战】如何在项目中基于 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中的接口了。

相关推荐
大勇前进3 分钟前
CSS 选择器优先级详解,一次搞懂权重计算规则
后端
骑着蜗牛撵大象3277 分钟前
豆包 Seed 驱动的记账智能体:从拍票抽取到月报生成的全链路落地记录
java·前端·javascript·结构化输出·豆包seed·多模态识别·记账系统
姜鱼问生15 分钟前
fail2ban 实战:从默认配置到生产可用
后端·算法·架构
憧憬成为java架构高手的小白16 分钟前
langchain4j手敲理解
java·langchain
10mAh1 小时前
【Java】ArrayList 遍历删除为什么报错?三种写法与漏删复现
java·开发语言·windows
JavaGuide1 小时前
DeepSeek Harness 重磅更新,Codex、Claude Code 子智能体进官方插件列表了,还有 Git 工作树和思考翻译!
前端·后端
thefool1122661 小时前
多线程 4
java
WeiXin_DZbishe1 小时前
基于微信小程序的本地闲置物品交易平台-计算机毕设 附源码【课程设计】26825
vue.js·spring boot·python·微信小程序·架构·php·课程设计
Rain的Java大神之路1 小时前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源2 小时前
springboot本地生活服务平台33399-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·小程序·flask·课程设计