单体应用模块化,将项目代码中原以文件夹分层的形式抽出来,将单独抽出来的部分放到新建模块中实现,最后将该模块重新注入到主应用模块中启动时加载。
思路
当单体项目业务多起来一个模块看起来很多文件夹,文件夹下显得结构有点乱不好找对应的控制器和业务类;这时候我就考虑把他抽出来划分一个一个模块,按业务功能呢划分,最后在一个主模块集成启动。这样还是单体项目,但是优化了架构。(低情商:看起来更舒服,找代码更方便;强迫症)
个人这个思路还是借鉴之前写java单体和微服务衍生;出现以下想法
- 简单式单体项目正常一个或两模块。
- 单体项目划分模块:启动和请求程序入口模块、通用模块、框架基础和配置模块、任务调度模块、业务处理模块等(典型案例若依)。
- 按业务模块化、业务整个模块化(ABP)
单体-》模块化-》微服务 这是个人理解的欢迎大家讨论。(感觉还是java架构设计目录结构层次简单点可能比较熟悉java)
简单操作利用依赖注入实现业务
参考文档:
- https://www.milanjovanovic.tech/blog/what-is-a-modular-monolith
- https://cloud.tencent.com/developer/article/1817516
自己摸索的如下
项目结构图:
依赖图
我感觉可以优化,把Domain模块,放到业务模块(A|B)里面,欢迎大佬指点。