服务分层改造
时间 | 操作 | 人员 |
---|---|---|
2023年04月12日23:04:00 | 创建文档 | Cheems |
原始项目结构
所有文件糅杂在一起(大多数公司如此),没有分层开,功能增加代码复杂不清晰
分层改造后
先确定思路,后续把功能搬过来即可!!!!
分层说明
每一层只解决一部分问题,通过所有层的协作来完成整体目标。
分层设计有效的降低了每个子问题的规模与复杂度。
模块 | 说明 |
---|---|
cili-common | 公共模块 |
cili-repository | 数据存储层 |
cili-infrastructure | 基础服务层,包含redis,mq等外部基础服务或中间件服务 |
cili-service | 业务服务层 |
cili-web | http接口层 |
cili-bootstrap | 应用启动层 |
分层设计带来的好处:
1、降低了系统软件的复杂度,将一个复杂问题通过分解,分而治之
2、功能的复用和封装
3、有利于促进标准化。
多个Module只用一个启动类
需要补一下SPI的知识
启动项目,使用postman调用web模块的接口
http://127.0.0.1:8080/api/v1/test
Maven打包示例
顶层pom文件打包脚本
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.lua</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.0.1</version>
</plugin>
</plugins>
</build>
中间层-web
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
中间层-commoon
同web层 指定jdk版本就行了
启动层-bootstrap
<build>
<finalName>cili-bootstrap</finalName>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2</version>
<configuration>
<descriptors>
<descriptor>src/main/resources/package.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.5.RELEASE</version>
</plugin>
<!-- maven install 跳过测试 等价于命令 mvn install -Dmaven.test.skip = true-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
指定打成什么包
package.xml
<assembly>
<id>package</id>
<formats>
<format>zip</format>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/bin</directory>
<outputDirectory>bin</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
查看打包结果
试试看这个多模块打的包
postman调用一下web模块的方法
http://127.0.0.1:8080/api/v1/test
进入成功了~~~~~
至此项目分层改造结束
源代码参考:
https://download.csdn.net/download/qq_17369545/87683394