平时在分布式开发中,总会碰到一些重复的代码块。今天就来记录一下怎么操作吧。
有一个场景,就比如我们自己编写了一个服务提供模块和服务消费模块,它们两都在一个父工程下:
一般服务消费模块会远程调用服务提供模块,那它们之间总归要传递一些参数吧。这个参数常见的就是一些实体类。由于它们不属于一个模块,而又需要传递一个相同的实体类。那以前的做法就是在两个模块中都写上相同的实体类。现在模块少还好说,后续模块多了之后,一下几十个模块,我们也要写几十次相同的代码?
这个时候程序思维就出来了。我们总是说高内聚,低耦合
,很多重复的代码块,咱们的确没有必要写个几十上百次。不如抽取出来,提高耦合性?需要的时候再拿出来调用。
现在可以编写一个公共模块,将重复的模块放进去,比如我们刚刚需要抽取的实体类:
这里因为业务需求,有两个实体类(CommonResult与Payment
)需要抽取。
之后编写公共模块的pom
文件:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud_demo</artifactId>
<groupId>com.leslie</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-api-commons</artifactId>
<dependencies>
<!--引入lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- 自动热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.2.0</version>
</dependency>
</dependencies>
</project>
小说明一下,这个公共模块不对外暴露,所以里面无需任何业务代码与controller
层。只需要存放一些公共代码即可。同时因为是分布式的一部分,所以在pom
文件中需要继承父工程。
最后在引入一些需要的依赖即可,lombok&devtools
就不用说了,hutool
是一个强大的工具类,比如时间格式转换等等都能用到,这里因为该模块后期要使用到,所以先引用。
这里还差最后一步,就是你写好公共模块后,总要去用呀!哪些模块需要用到公共代码,就在那个模块下的pom
文件中加上坐标依赖:
<!-- 引入工具模块 -->
<dependency>
<groupId>com.leslie</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
这里版本号根据你的实际项目来,其他同理。
相信有些网友看出来了,最近在跟着尚硅谷的周阳老师学习SpringCloud第二季的知识,现在慢慢跟着敲源码,后续会把源码和脑图更新到Github中,其中源码会持续更新,也算是激励自己吧!感谢各位观看哈🙏