如何開發(fā)一個輕量且高效的SDK(怎么開發(fā)sdk)

背景

相信大家都使用過Maven,我們平時要使用公共的API,只需要導入Maven依賴即可。然后就可以直接調(diào)用里面的方法了,非常的方便。

最近的項目有個需求,需要將業(yè)務系統(tǒng)與公司內(nèi)部的OA系統(tǒng)做交互,比如業(yè)務系統(tǒng)的任務待辦要發(fā)到OA系統(tǒng)的待辦中,還要發(fā)送OA郵件等,還需要通過OA登錄業(yè)務系統(tǒng)等。

其實上面的操作比較簡單,我們只需要通過http遠程調(diào)用OA的接口即可。將接口封裝完畢后,調(diào)用,測試。一切順利。

但是我們的系統(tǒng)實際上是由很多子系統(tǒng)構(gòu)成的,今天我在這個系統(tǒng)里封裝了OA接口,明天在另外一個系統(tǒng)可能還要需要使用,那么可能又要封裝一次。

那么自己何不做成一個公共的SDK呢,這樣只要有需要的系統(tǒng)引入依賴,即可實現(xiàn)輕松調(diào)用。

說干就干。

配置文件

首先需要建立一個工程,這里我建立一個SpringBoot的工程。

如何開發(fā)一個輕量且高效的SDK(怎么開發(fā)sdk)

然后我們在pom.xml配置文件中配置編譯、打包插件

<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources></build>

打包好的jar需要上傳到maven倉庫,這里還需要配置倉庫地址。

<distributionManagement> <repository> <id>nexus-releases</id> <url>http://10.xx.xx.xxx/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <url>http://10.xx.xx.xxx/repository/maven-snapshots/</url> </snapshotRepository></distributionManagement>

pom.xml文件中配置好倉庫地址,一個是releases的,一個試snapshots的。maven倉庫圖如下:

如何開發(fā)一個輕量且高效的SDK(怎么開發(fā)sdk)

除了工程里面的配置,還需要到Maven的配置文件中添加配置

settings.xml

<servers> <server> <id>nexus-releases</id> <username>admin</username> <password>adminxxx</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>adminxxx</password> </server></servers>

我們將打包的jar上傳到的是私服,如果配置文件中配置了代理,需要將代理注釋掉。

如何開發(fā)一個輕量且高效的SDK(怎么開發(fā)sdk)

就上上圖中<proxies> … </proxies>的內(nèi)容。

開發(fā)功能

一切準備就緒后就可以開發(fā)功能了。

如何開發(fā)一個輕量且高效的SDK(怎么開發(fā)sdk)

我們以上圖中的BacklogTaskClient為例,在這個類中,我們封裝一個保存待辦的功能:

/** * 保存待辦 * * @param param * @return*/public String addBacklogTask(AddBacklogTaskParam param) { String url = baseUrl "/backlogTask/add"; GenericApiRequest request = new GenericApiRequest.Builder() .requestUrl(url) .requestMethod(HttpMethod.POST) .requestData(param) .responseTypeReference(new TypeReference<IdParam<String>>() { }) .build(); IdParam<String> idParam = request.waitResponse(); return idParam.getId();}

實際上就是遠程調(diào)用遠程待辦功能,然后封裝起來。

我們在類中添加了

@ConditionalOnProperty(name = "basic-service.backlogtask.provider", havingValue = "default")

@ConditionalOnProperty用于控制是否將該類注入到Spring的容器中,如果我們在業(yè)務工程的properties文件中配置

basic-service.backlogtask.provider=default

那么業(yè)務類啟動的時候會將該類注入到容器中。這樣實現(xiàn)按需注入,提高SDK的性能。

推送到倉庫

運行idea的maven插件里面的deploy,即可將工程打包并發(fā)送到maven倉庫中。

如何開發(fā)一個輕量且高效的SDK(怎么開發(fā)sdk)

進入maven倉庫,發(fā)現(xiàn)推送成功。

如何開發(fā)一個輕量且高效的SDK(怎么開發(fā)sdk)

接下來我們就需要在業(yè)務系統(tǒng)中調(diào)用了。

業(yè)務系統(tǒng)調(diào)用

首先引入我們的maven依賴:

<dependency> <groupId>com.xx.xx.common</groupId> <artifactId>xx-xx-common-sdk</artifactId> <version>1.0.5-SNAPSHOT</version></dependency>

接著在啟動類添加掃描路徑

@ComponentScan(value = {"com.xx.xx"})

然后配置文件中作需要的配置

#properties配置文件配置相關(guān)信息basic-service.backlogtask.provider=defaultbasic-service.backlogtask.urlPrefix=http://10.xx.xx.xx:3x000

配置之后,業(yè)務系統(tǒng)啟動時就能注入相關(guān)的類了。

最后使用Autowired取出需要的bean。

@Autowiredprivate BacklogTaskClient backlogTaskClient;

調(diào)用即可

String id = "1486154056300101632";BacklogTask backlogTaskById = backlogTaskClient.getBacklogTaskById(id);Console.log("test is over:{}", backlogTaskClient);

這樣這個公共功能在各個系統(tǒng)中都可以引入使用了。

到此,我們的SDK就開發(fā)完成了。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。

(0)
上一篇 2023年5月18日 上午9:07
下一篇 2023年5月18日 上午9:24

相關(guān)推薦

  • 科研項目人員費是指

    科研項目人員費是指為支持科研項目中的研究人員和技術(shù)人員而收取的費用。這些費用通常用于支付他們的薪資、福利、培訓和研究設備的費用等。 科研項目人員費是一個復雜的概念,它可能因項目類型…

    科研百科 2025年4月13日
    4
  • 航天項目有哪些與中國神話有關(guān)

    航天項目與中國神話的關(guān)系 航天項目是一項全球性的活動,涵蓋了從太空探索到衛(wèi)星通信等多個領(lǐng)域。然而,你知道嗎?航天項目與中國神話有著密切的關(guān)系。在中國,神話是一個非常重要的文化現(xiàn)象,…

    科研百科 2024年11月27日
    16
  • 宏光MINIEV GAMEBOY個性化定制服務平臺LING LAB即將上線(宏光mini ev 官網(wǎng))

    【2022年3月7日】宏光MINIEV GAMEBOY內(nèi)外飾的曝光,給予了玩創(chuàng)青年更多想象空間。今日,五菱公布新車的首批九大品類潮創(chuàng)套件,用戶可通過即將上線的“國內(nèi)首個原廠個性化定…

    科研百科 2024年5月8日
    54
  • 龍湖協(xié)同辦公門戶

    龍湖協(xié)同辦公門戶:讓團隊協(xié)作更高效 隨著數(shù)字化時代的到來,團隊協(xié)作已經(jīng)成為了企業(yè)運營中不可或缺的一部分。而龍湖作為房地產(chǎn)領(lǐng)域的領(lǐng)軍企業(yè),也意識到了團隊協(xié)作的重要性,并在這方面取得了…

    科研百科 2025年1月14日
    9
  • 西餐廳管理系統(tǒng)項目書

    西餐廳管理系統(tǒng)項目書 項目概述 隨著現(xiàn)代商業(yè)競爭的不斷加劇,西餐廳成為了越來越多企業(yè)的重要戰(zhàn)略方向。然而,西餐廳的管理方式卻常常存在著問題,例如缺乏有效的數(shù)據(jù)管理和分析、流程繁瑣、…

    科研百科 2025年1月21日
    7
  • 天津工程項目管理系統(tǒng)

    天津工程項目管理系統(tǒng) 隨著工程項目的不斷增加,管理工程項目變得日益復雜。傳統(tǒng)的手動管理方式已經(jīng)無法滿足現(xiàn)代工程項目的需要。因此,一種先進的工程項目管理系統(tǒng)被開發(fā)出來,可以幫助項目經(jīng)…

    科研百科 2025年6月17日
    0
  • 科研項目調(diào)研管理系統(tǒng)

    科研項目調(diào)研管理系統(tǒng) 隨著科技的不斷進步,科研項目調(diào)研管理也在不斷地更新和完善。為了更好地管理科研項目調(diào)研工作,我們開發(fā)了一套全新的科研項目調(diào)研管理系統(tǒng)。該系統(tǒng)旨在提高科研項目調(diào)研…

    科研百科 2024年12月26日
    2
  • 工程項目管理類型有哪幾種

    工程項目管理類型有哪幾種 工程項目管理是指在工程項目的開發(fā)、建設、運營和維護過程中,通過科學的方法和組織,對工程項目進行全面的管理和監(jiān)督,確保工程項目按時完成、高質(zhì)量交付和達到預期…

    科研百科 2024年9月23日
    12
  • 投資項目協(xié)同管理系統(tǒng)

    投資項目協(xié)同管理系統(tǒng): 提高項目管理效率 投資項目協(xié)同管理系統(tǒng)是一種高效的項目管理工具,可以幫助企業(yè)或組織實現(xiàn)協(xié)同管理,提高項目管理效率。該系統(tǒng)可以幫助項目經(jīng)理和項目團隊更好地協(xié)作…

    科研百科 2025年6月18日
    1
  • 為什么現(xiàn)在大家都在準備申報課題?附課題申報通知(為什么要課題申報)

    廣東省2024年度高級衛(wèi)生專業(yè)技術(shù)資格考試今天開始報名了,只有通過了這個考試才有資格去競爭副高的評選,但是這個考試從報名到考試的時間長達四五個月,因此在備考之余,各項業(yè)績成果都該開…

    科研百科 2024年4月14日
    84
日本精品在线观看视频| 99久9在线|免费| 精品亚洲国产成人| 无码精品人妻一区二区三区影院 | 一区二区三区精品视频| 精品国产第一国产综合精品| 成人国产永久福利看片| 国产69精品久久久久妇女| 久久天天躁狠狠躁夜夜中文字幕 | 中文在线观看www| 国产一卡二卡四卡免费| 久久久久人妻一区精品色| 精品久久久久久久免费人妻| 少妇无码太爽了在线播放| 午夜看一级特黄a大片黑| 久久久久亚洲av无码专区| 网站正能量www正能量视频| 婷婷五月综合缴情在线视频| 伊人色综合久久大香| 一级片在线免费看| 欧美大香线蕉线伊人久久| 国产猛男猛女超爽免费视频 | 中文字幕丰满乱码| 欧美综合自拍亚洲综合图片区| 国内一卡2卡三卡四卡在线| 亚洲第一区视频| 韩国一级毛片完整高清| 成全视频免费高清| 免费中文字幕视频| 麻豆成人精品国产免费| 成人无码WWW免费视频| 厨房切底征服麻麻| www.五月婷| 欧美另类videosbestsex高清| 国产无卡一级毛片aaa| 九九综合VA免费看| 精品成人一区二区三区免费视频| 女人18毛片免费观看| 亚洲精品NV久久久久久久久久| 91成人精品视频| 欧洲成人午夜精品无码区久久 |