forum-java项目模块详解
  开发者客栈 2021年03月03日 762 7

一 背景

很多同学在熟悉一个新系统时,第一关注点应该都是这个系统有哪些模块,模块之间的依赖关系是什么,不同模块内部具体是做什么的?

当把上面的问题都搞清楚后,做为一个开发人员,就可以很快的上手对这个系统做需求迭代了。

带着上面的问题,我们这篇文章就针对forum-java系统展开详细解答。

二 模块依赖及简介

模块依赖关系图

模块依赖关系图

  • starter模块:项目启动入口模块,SpringBootApplication启动类就在这个模块,这个模块也会把一些通过依赖倒置实现的功能infrastructure模块依赖进项目中;
  • portal模块:系统门户模块,用户和管理员需要访问的页面都在这里,系统提供的http接口也都在这里;
  • api模块:系统提供的所有对外接口,参考dubbo项目的api模块设计,如果企业用户系统之间调用使用dubbo的话,可以将api模块打包提供出去,就是对外提供的接口服务了;
  • facade模块:对api模块接口的实现,以及对接口请求参数的合法性校验,不做任何业务逻辑处理,将校验合法的请求转发给app模块进行业务处理;
  • app模块:业务用例处理模块,这里将领域服务domain模块和外部服务infrastructure模块做了聚合,用于实现业务用例、还做了一些领域事件监听等业务处理;
  • domain模块:核心领域实体、领域仓储、领域服务等都在这里定义;
  • infrastructure模块:基础设置及三方依赖模块,数据库、邮件发送、文件上传、搜索等三方服务的实现都在这里;
  • common模块:公共枚举的定义、工具类、自定义业务异常等都在这里;

三 模块功能详解

3.1 starter模块

image.png

  • ForumJavaApplication:Spring boot项目启动入口类;
  • application.properties:项目配置文件,自定义配置信息都在这里配置;
  • application-qa.properties:qa环境项目配置文件;
  • data.sql:项目初始化数据sql脚本;
  • logback.xml:项目日志配置;
  • schema.sql:项目初始化数据表结构脚本;

3.2 portal模块

image.png

  • forum-vue:用户编辑页vue源码文件,打包编译后的编译文件在vue-dist文件夹内;
  • controller:http rest接口及页面请求转发控制器;
  • request:http rest请求body参数;
  • support:其他支持类;

3.3 api模块

image.png

  • model:请求和响应模型;
  • request:接口请求参数;
  • response:接口响应参数;
  • service:对外提供的接口服务;
  • vo:可公用请求或响应模型;

3.4 facade模块

image.png

  • aspect:接口统一异常处理、请求日志输出、获取请求上下文登录用户信息;
  • impl:api模块接口实现,请求参数合法性校验;
  • support:其他支持类;
  • validator:请求参数校验器;

3.5 app模块

image.png

  • listener:业务处理中产生的事件监听处理逻辑(观察者模式实现的事件监听器);
  • manager:接口具体的业务实现逻辑;
  • support:其他支持类;
  • transfer:请求和响应参数与领域对象之间的转换器;

3.6 domain模块

image.png

  • entity:领域对象;
  • repository:领域对象的仓储接口定义(具体的实现在infrastructure模块);
  • service:领域服务及外部服务接口定义(具体的实现在infrastructure模块);

3.7 infrastructure模块

image.png

  • audit:发布的文章和问答的内容审核,企业用户可接入自己的风控系统做内容合规性校验,校验通过后回调此接口将文章和问答审核通过用户可见;
  • cache:缓存服务的接口实现,用户登录的分布式session解决方案一般是存放在redis等缓存服务器,企业用户可接入自己的缓存服务器;
  • dal:数据库dao接口和do对象的定义;
  • file:文件上传的接口实现,目前文件上传到七牛云,企业用户可自定义上传到自己文件服务器;
  • mail:邮件发送的接口实现,企业用户可接入自己的消息服务发送邮件;
  • search:搜索服务的接口实现,企业用户可接入自己的搜索服务;
  • transfer:领域模型和数据模型之间的转换器;

3.8 common模块

image.png

  • constant:系统常量定义;
  • enums:系统枚举值定义;
  • exception:自定义业务异常;
  • model:自定义模型;
  • support:其他支持类;

以上就是forum-java系统所有模块及每个模块的功能详解,看完以后,相信各位购买商业版二开的同学,和学习源码的同学都能对forum-java内部实现有一个整体和详细的认识。

最后一次编辑于 2021年03月12日 4

测试人员

这个我就很喜欢了

2021-04-10 16:42:37      回复

测试人员

哈哈哈哈

2021-04-10 16:43:00 回复

123123

hhhhhh

2021-04-10 16:51:32 回复

黛眉尧山小

cvbbb

2021-03-14 22:11:48      回复

shrek

xiedebucuo

2021-03-05 16:37:25      回复

shrek

good

2021-03-08 10:52:03 回复

shrek 回复:shrek

good

2021-03-08 10:52:13 回复

开发者客栈
作者其他文章 更多