😀大家好!我是向阳🌞,一个想成为优秀全栈开发工程师的有志青年!	
📔今天来说一说如何开发一个自己的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);
    }
}

运行结果一:

我们可以看出,打印出来的 accessKeysecretKey 和我们在配置文件配置的是一致的!

在这里插入图片描述
运行结果二:

如图所示,我们也可以成功生成对应的 accessKey 和 secretKey
在这里插入图片描述

补充

注意!!! 构建好的 SDK 只能在自己的本地电脑上使用,如果想要让大家都使用你的SDK,可以发布到远程Maven仓库中。

如果你的朋友想要使用你的 SDK ,直接把打包安装好的 jar包 发送过去即可。

在这里插入图片描述

结语

至此,大功告成😎!!!

我们可以按照该流程,创建属于自己的一套常用的工具类,或者是一些其他的方法,我们可以在项目中引入这些 SDK ,让自己的项目看起来更加高端大气上档次
请添加图片描述

——👦[作者]:向阳256
——⏳[更新]:2024.12.16
——🥰本人技术有限,如果有不对指正需要更改或者有更好的方法,欢迎到评论区留言。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐