拥有自己的代码库真的很酷--如何开发一个SDK
拥有自己的代码库真的很酷–如何开发一个SDK
日复一日编程,年复一年造轮
前言
不知你是否和我一样,对编程解决问题有一种 ” 懒人执着 “ :已有代码能解决的,一律不重复造轮子
写过的重要代码就拷贝到自己的文本文件里整理起来,下次遇到相同问题直接cv,还记的我一个水仙花算法的代码应付了整个大学遇到的水仙花问题
即了解代码怎么实现,也节省了重复编写代码的时间,看上去真是一举两得
但当我存储的代码块越来越多,管理则成了一个问题:
试问:你希望看满满一大页的代码块来找你的目标代码,还是顺手就自己编写完那简单的轮子?
何况固定的代码并不能应对不同的场景,没准你还要理解和修改呢
于是在大二那年,我的项目用上了Maven,一个开源的依赖管理工具,你想要的功能大多都可以直接搜索下载依赖
几乎彻底解决了造轮子问题,但仍然有问题:
其一:尽管依赖有很多,但毕竟不是自己写的,对于功能实现和后续优化可能并没有那么有帮助
其二:下载的依赖是否匹配项目也是一个问题,名称相似而不相同的依赖也有不少,如何选择也会影响之后的开发
既然又希望理解原理,又不想后续重复造轮子
为什么不自己写常用的依赖呢?
- 通用的类,固定的常量,组件连接方法,超类的模板,常用的工具类等,都可以自己来写,打包成为依赖,自己来用呀
既了解如何实现,方便后续优化时进行更改,同时也利用Maven解决了管理问题,不用日后重复造轮子
步骤
新建项目(Springboot - spring Initializr)
打开IDEA,选择新建一个springboot项目
删除文件
删除springboot-starter-test依赖,删除build组件,删除Application主类,删除test中的测试方法
pom.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.7.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.itegg</groupId>
<artifactId>common</artifactId>
<version>0.0.1</version>
<name>common</name>
<description>ITegg common package</description>
<properties>
<java.version>8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>
项目结构:
新建配置类
在刚刚删除主类的地方生成新的配置类ITeggTestConfig(名字自己取就好)
package com.itegg.common;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties("itegg.test")
@Data // lombok注解,帮助把属性设置get和set方法,这里暂时没用上
@ComponentScan // 扫包注解
public class ITeggTestConfig {
}
新建一个Util包,创建一个Math类
public class Math {
public int Addition(int a, int b) {
return a + b;
}
public int Subtraction(int a, int b) {
return a - b;
}
public int Multiplication(int a, int b) {
return a * b;
}
public int Division(int a, int b) {
if(b == 0) return 0;
return a / b;
}
}
在resource下新建文件夹META-INF
在META-INF下新建一个spring.factories文件,指引开启项目(后面的com.itegg.common.ITeggTestConfig请改为上述创建的配置类名称)
# spring boot starter
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.itegg.common.ITeggTestConfig
打包
执行右侧Maven栏中的install命令进行打包
调用
复制该项目中的groupId,artifactId,version信息,放置在目标项目pom.xml文件中的dependency里
<dependency>
<groupId>com.itegg</groupId>
<artifactId>common</artifactId>
<version>0.0.1</version>
</dependency>
刷新maven依赖,后续就像使用其他maven的依赖一样
public class Test {
public static void main(String[] args) {
int a = 10;
int b = 20;
Math math = new Math();
System.out.println(math.Addition(a, b));
System.out.println(math.Subtraction(a, b));
System.out.println(math.Multiplication(a, b));
System.out.println(math.Division(a, b));
}
}
--------
return:
30
-10
200
0
当然,这种只是一个再简单不过的例子,但不积跬步无以至千里,这样一步步建立自己的代码库,真的很酷!
顺带一提,这只是在本地maven中加载了依赖,其他电脑是使用不了的,如果希望上传到网上公开给大家使用的话,要去maven仓库注册账号发布
怎么样,读完了不想动手试试吗?
坚持日复一日编程,打破年复一年造轮