当前位置: 首页 > news >正文

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

什么是SDK

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

为什么使用SDK

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

项目实战

SDK结构

1)编写 SDK 版本号:

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

//告诉Spring这是一个配置类
@Configuration
//读取application.yml配置类,并且给配置类加上前缀"myapi.client"
@ConfigurationProperties("myapi.client")
//Lombok注解,用于生成get、set方法
@Data
//用于自动扫描组件,自动注入Bean
@ComponentScan
public class YuApiClientConfig {private String accessKey;private String secretKey;@Beanpublic MyApiClient myApiClient(){return new MyApiClient(accessKey,secretKey);}
}

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

 

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

# spring boot starter
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.myapiclientsdk.YuApiClientConfig

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

 

6)引入依赖

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

添加配置类:

注入对象:

调用 API 接口方法:

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中的接口了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ARM基础知识点及简单汇编语法
  • 【数据结构-栈】力扣71. 简化路径
  • 【计算机网络 - 基础问题】每日 3 题(二十一)
  • YOLOv8 OBB win10+ visual 2022移植部署
  • 【2023次方 / B】
  • 王红梅老师ppt介绍算法设计一般过程---对上周csdn的补充----可以参考老版教师用书--单链表专题在介绍插入时介绍了正向思维方法,这是更详细的解释跟全面
  • iptables和nftables
  • 淘客系统开发之卷轴模式系统源码功能分析
  • 解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
  • ReKep——李飞飞团队提出的让机器人具备空间智能:基于视觉语言模型GPT-4o和关系关键点约束
  • C语言常见字符串函数模拟实现一:(strlen,strcpy,strcat,strcmp,strstr )
  • 最新最详细的Mastercam安装包下载安装教程(保姆级)
  • Go语言的垃圾回收(GC)机制的迭代和优化历史
  • 在HTML中添加图片
  • 使用vite+react+ts+Ant Design开发后台管理项目(二)
  • @angular/forms 源码解析之双向绑定
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 4个实用的微服务测试策略
  • Android框架之Volley
  • Flannel解读
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JS 面试题总结
  • PAT A1120
  • vue.js框架原理浅析
  • 从零开始的无人驾驶 1
  • 高性能JavaScript阅读简记(三)
  • 工作手记之html2canvas使用概述
  • 记一次和乔布斯合作最难忘的经历
  • 解析带emoji和链接的聊天系统消息
  • 使用agvtool更改app version/build
  • elasticsearch-head插件安装
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #etcd#安装时出错
  • #控制台大学课堂点名问题_课堂随机点名
  • #数据结构 笔记三
  • %@ page import=%的用法
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (k8s)Kubernetes本地存储接入
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (新)网络工程师考点串讲与真题详解
  • (一)80c52学习之旅-起始篇
  • (转)菜鸟学数据库(三)——存储过程
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • :中兴通讯为何成功
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • @RestControllerAdvice异常统一处理类失效原因
  • @WebService和@WebMethod注解的用法
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码