服务分层改造DDD
时间 | 操作 | 人员 |
---|---|---|
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>**/*.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