网站首页 > java教程 正文
背景
相信大家都使用过Maven,我们平时要使用公共的API,只需要导入Maven依赖即可。然后就可以直接调用里面的方法了,非常的方便。
最近的项目有个需求,需要将业务系统与公司内部的OA系统做交互,比如业务系统的任务待办要发到OA系统的待办中,还要发送OA邮件等,还需要通过OA登录业务系统等。
其实上面的操作比较简单,我们只需要通过http远程调用OA的接口即可。将接口封装完毕后,调用,测试。一切顺利。
但是我们的系统实际上是由很多子系统构成的,今天我在这个系统里封装了OA接口,明天在另外一个系统可能还要需要使用,那么可能又要封装一次。
那么自己何不做成一个公共的SDK呢,这样只要有需要的系统引入依赖,即可实现轻松调用。
说干就干。
配置文件
首先需要建立一个工程,这里我建立一个SpringBoot的工程。
然后我们在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仓库图如下:
除了工程里面的配置,还需要到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上传到的是私服,如果配置文件中配置了代理,需要将代理注释掉。
就上上图中<proxies> ... </proxies>的内容。
开发功能
一切准备就绪后就可以开发功能了。
我们以上图中的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();
}
实际上就是远程调用远程待办功能,然后封装起来。
我们在类中添加了
@ConditionalOnProperty(name = "basic-service.backlogtask.provider", havingValue = "default")
@ConditionalOnProperty用于控制是否将该类注入到Spring的容器中,如果我们在业务工程的properties文件中配置
basic-service.backlogtask.provider=default
那么业务类启动的时候会将该类注入到容器中。这样实现按需注入,提高SDK的性能。
推送到仓库
运行idea的maven插件里面的deploy,即可将工程打包并发送到maven仓库中。
进入maven仓库,发现推送成功。
接下来我们就需要在业务系统中调用了。
业务系统调用
首先引入我们的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配置文件配置相关信息
basic-service.backlogtask.provider=default
basic-service.backlogtask.urlPrefix=http://10.xx.xx.xx:3x000
配置之后,业务系统启动时就能注入相关的类了。
最后使用Autowired取出需要的bean。
@Autowired
private BacklogTaskClient backlogTaskClient;
调用即可
String id = "1486154056300101632";
BacklogTask backlogTaskById = backlogTaskClient.getBacklogTaskById(id);
Console.log("test is over:{}", backlogTaskClient);
这样这个公共功能在各个系统中都可以引入使用了。
到此,我们的SDK就开发完成了。
猜你喜欢
- 2025-01-06 IntelliJ IDEA详细配置图解,挖掘更多的功能
- 2025-01-06 SpringBoot集成开源IM框架MobileIMSDK,实现即时通讯IM聊天功能
- 2025-01-06 基于crudapi零代码平台后端Java SDK二次开发API认证和鉴权(二)
- 2025-01-06 微信开发最新Java SDK来了:WxJava3.9.0
- 2025-01-06 亚马逊 spapi — 生成 Java SDK
- 2025-01-06 OpenTelemetry Java SDK 高级用法
- 2025-01-06 Easysearch Java SDK 2.0.x 使用指南(三)
- 2025-01-06 一篇文章,手把手教你运行百度离线人脸识别SDK-Java版
- 2025-01-06 1000个字带你一次性搞懂JavaAgent技术,反正我是彻底服了
- 2025-01-06 字节码增强技术之 Java Agent 入门
你 发表评论:
欢迎- 04-24Java Collections 工具类集合框架中常用算法解析
- 04-24桶排序的简单理解
- 04-24Java集合框架底层实现原理大揭秘
- 04-24Java 集合框架全面解析:选对数据结构,提升开发效率
- 04-24c#集合排序
- 04-24Java面试中常被问到的集合类深度解读
- 04-24VBA技术资料MF278:对集合进行排序
- 04-24Spring 最常用的 7 大类注解,史上最强整理
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)