如何开发一个简易的SDK?
1.什么是SDK?2.开发SDK有什么好处?3.开发一个SDK的详细步骤3.1.创建一个spring boot项目3.2.删除启动类3.3.删除build构建3.4.删除测试类3.5.编写配置类3.6.指定配置类3.7.编写一个工具类3.8.发布SDK3.9.进行测试
补充结语
😀大家好!我是向阳🌞,一个想成为优秀全栈开发工程师的有志青年!
📔今天来说一说如何开发一个自己的SDK。
1.什么是SDK?
首先我们先来说一说什么是SDK?
SDK是指软件开发工具包(Software Development Kit),也称为开发包或者开发工具包。SDK通常是由一个或多个软件开发工具组成的集合,用于帮助开发者创建、测试和部署软件应用程序。
通俗来说,SDK就是一个jar包,里面包含各种函数,方法,可以直接引入到maven仓库中使用。
2.开发SDK有什么好处?
开发SDK后,开发者只需引入,可以直接在application.yml或者.properties等配置文件中直接写配置,自动创建客户端。在理想的情况下,只需要引入SDK后,开发者只需要关心调用哪些接口,传递哪些参数。
3.开发一个SDK的详细步骤
3.1.创建一个spring boot项目
在选择依赖时,添加上以下两个依赖。Lombok、Spring Configuration Processor
3.2.删除启动类
删除spring boot给我们创建的启动类
3.3.删除build构建
在 pom.xml 中删除build构建的所有内容,因为我们要构建一个SDK,而不是一个可以在终端运行的项目。
3.4.删除测试类
删除spring boot项目给我们创建的测试类
3.5.编写配置类
@Data
@ComponentScan
@Configuration
@ConfigurationProperties(prefix = "shousi.api.client")
public class ShousiSDKConfig {
private String accessKey;
private String secretKey;
@Bean
public ShousiApiClient shousiApiClient() {
return new ShousiApiClient(accessKey, secretKey);
}
}
注册 Bean 返回 ShousiApiClient 的代码如下:
public class ShousiApiClient {
private String accessKey;
private String secretKey;
public ShousiApiClient(String accessKey, String secretKey) {
this.accessKey = accessKey;
this.secretKey = secretKey;
}
public String getAccessKey() {
System.out.println("accessKey: " + accessKey);
return accessKey;
}
public String getSecretKey() {
System.out.println("secretKey: " + secretKey);
return secretKey;
}
}
3.6.指定配置类
在resources目录下创建目录META-INF (名称必须一致) ,在该目录下创建 spring.factories,在其中指定配置类。
配置内容: 等号后面是上一步写的配置类的相对路径。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.shousi.ShousiSDKConfig
3.7.编写一个工具类
创建一个包名为utils的包(包名随意),在下面随意编写一个工具类,为后续测试做准备,我这里写的是随机生成 accessKey ,secretKey 的工具类。
public class KeyGenerator {
private static final int KEY_LENGTH = 32; // 指定生成的key长度为32字节
public static String generateAccessKey() {
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[KEY_LENGTH / 2]; // 生成的字节数要除以2
random.nextBytes(bytes);
return Base64.getEncoder().encodeToString(bytes).replace("/", "").replace("+", "").substring(0, 20);
}
public static String generateSecretKey() {
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[KEY_LENGTH];
random.nextBytes(bytes);
return Base64.getEncoder().encodeToString(bytes).replace("/", "").replace("+", "").substring(0, 40);
}
}
3.8.发布SDK
指定要发布的SDK的信息,设置完成后可以进行发布。
在pom.xml中找到如下图所示的信息,设置版本号。 设置完成后,进行install进行打包安装。
3.9.进行测试
接下来我们就可以在我们想要用到该 SDK 的项目中进行引入,如下图所示,在另外一个项目中引入 3.7 中设置好的相关信息。
引入后,我们就可以在配置文件 yml,properties 中进行配置我们注册的属性了,如下图所示,IDEA已经为我们提示快捷信息了。
接下来我们进行测试,看看我们是否能够使用引入的SDK中注册的Bean和一些工具类。
@SpringBootTest
class ShousiInterfaceApplicationTests {
@Resource
private ShousiApiClient shouSiApiClient;
@Test
void testSDK() {
shouSiApiClient.getAccessKey();
shouSiApiClient.getSecretKey();
}
@Test
void testSDK2() {
String accessKey = KeyGenerator.generateAccessKey();
String secretKey = KeyGenerator.generateSecretKey();
System.out.println(accessKey);
System.out.println(secretKey);
}
}
运行结果一:
我们可以看出,打印出来的 accessKey 和 secretKey 和我们在配置文件配置的是一致的!
运行结果二:
如图所示,我们也可以成功生成对应的 accessKey 和 secretKey。
补充
注意!!! 构建好的 SDK 只能在自己的本地电脑上使用,如果想要让大家都使用你的SDK,可以发布到远程Maven仓库中。
如果你的朋友想要使用你的 SDK ,直接把打包安装好的 jar包 发送过去即可。
结语
至此,大功告成😎!!!
我们可以按照该流程,创建属于自己的一套常用的工具类,或者是一些其他的方法,我们可以在项目中引入这些 SDK ,让自己的项目看起来更加高端大气上档次。
——👦[作者]:向阳256
——⏳[更新]:2024.12.16
——🥰本人技术有限,如果有不对指正需要更改或者有更好的方法,欢迎到评论区留言。