丁香五月亚洲,欧美孕妇XXX高清在线,国产中文资源,精品r视频在线

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

背景

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

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

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

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

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

說(shuō)干就干。

配置文件

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

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

然后我們?cè)?span id="0vnjca4runfb" class="candidate-entity-word" data-gid="15129200">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倉(cāng)庫(kù),這里還需要配置倉(cāng)庫(kù)地址。

<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文件中配置好倉(cāng)庫(kù)地址,一個(gè)是releases的,一個(gè)試snapshots的。maven倉(cāng)庫(kù)圖如下:

如何開發(fā)一個(gè)輕量且高效的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ā)一個(gè)輕量且高效的SDK(怎么開發(fā)sdk)

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

開發(fā)功能

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

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

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

/** * 保存待辦 * * @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();}

實(shí)際上就是遠(yuǎn)程調(diào)用遠(yuǎn)程待辦功能,然后封裝起來(lái)。

我們?cè)陬愔刑砑恿?/span>

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

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

basic-service.backlogtask.provider=default

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

推送到倉(cāng)庫(kù)

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

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

進(jìn)入maven倉(cāng)庫(kù),發(fā)現(xiàn)推送成功。

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

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

業(yè)務(wù)系統(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>

接著在啟動(dòng)類添加掃描路徑

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

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

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

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

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

@Autowiredprivate BacklogTaskClient backlogTaskClient;

調(diào)用即可

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

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

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

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

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

相關(guān)推薦

蜜桃好色视频| 日韩精品熟女一区二区| 超碰人人福利在线| 亚洲国产精品丝袜国产自在线| 久久青青草原精品国产麻豆| 婷婷五月激情网| 亚洲日本道1区2区3区| 日韩一级二级三级| bt天堂在线 视频| 国产欧美S精品一级二级三级| 欧美添下边视频全过程| 超碰免费在线观看| 亚洲欧洲无码专区| 日韩精品免费限制无码| 一级人爱| 少妇人妻无码| 久久中文无码一区二区| 久久东京热无码视频| 亚洲欧美精品中文字幕| 成人免费久久精品国产片久久影院| 香港无套三级网站| 久久国产亚洲精品| 国产电影AV在线播放| 伊人久久大香线蕉综合热| 动漫av观看网站不卡无码| 人妻无码中文久| 久久久久亚洲精品无码网址蜜桃| 香蕉午夜久久久亚洲欧洲湿| 亚洲操逼一区二区视频| 色欧美成人精品a∨| 国产日本韩国精品一区| 日韩久久本道| 精品欧美一区视频在线观看 | 色五月丁香六月欧美综合| 日日摸夜夜添夜夜添国产2020| 麻豆成人网站免费视频| 国产精品91影片| 国产乱xxxx国语对白| 成人电影一区二区| 超碰av四十蜜桃AV| 黑人操亚洲女人|