服务分层改造DDD

时间操作人员
2023年04月12日23:04:00创建文档Cheems

原始项目结构

所有文件糅杂在一起(大多数公司如此),没有分层开,功能增加代码复杂不清晰

分层改造后

先确定思路,后续把功能搬过来即可!!!!

分层说明

每一层只解决一部分问题,通过所有层的协作来完成整体目标。

分层设计有效的降低了每个子问题的规模与复杂度。

模块说明
cili-common公共模块
cili-repository数据存储层
cili-infrastructure基础服务层,包含redis,mq等外部基础服务或中间件服务
cili-service业务服务层
cili-webhttp接口层
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>**/*.luasrc/main/resourcesorg.apache.maven.pluginsmaven-archetype-plugin3.0.1
中间层-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