Maven 架构选型,单模块还是多模块?

简介: 1. 单模块优势快速上手,前期开发效率高。劣势要想实现传统的三层架构(web/service/dao),多采用分包,分包带来个问题就是,包之间边界约束不够。正常来说,三层架构之间是有依赖关系的,dao --> service --> web,依赖是单向的。

1. 单模块

优势

快速上手,前期开发效率高。


劣势

要想实现传统的三层架构(web/service/dao),多采用分包,分包带来个问题就是,包之间边界约束不够。


正常来说,三层架构之间是有依赖关系的,dao --> service --> web,依赖是单向的。


举个例子:前端请求的 xxxRequest 应该放哪呢,放 web 还是 service,放 web 的话,service 应该是不能访问的,所以怎么约束呢?


再极端一点,dao 不能调用 service 吧,但项目中最不缺的就是临时方案,所以怎么约束呢?


2. 多模块(重点来了)

优势

约束能力,模块间引用关系是明确的,项目架构更清晰。


劣势

简单说,从头搭着可能慢点,用上模板都差不多。


首推阿里COLA:https://github.com/alibaba/COLA


本人结合 阿里COLA4.0 实现了一个,模块结构如下


think-cola


start(启动项目)

think-client(api、dto)

think-controller(controller,调用app)

think-app(校验、封装、执行,调用domain、infrastructure)

think-domain(DDD 领域模型,也可暴露接口,由infrastructure实现)

think-infrastructure(db、rpc、search、防腐)

项目地址:https://github.com/AmosWang0626/think-cola


3. 怎么选?

作为应用级架构,小项目,2~3个人开发的,单模块可能就足够,前提是每个人都对架构有认识,个人约束力很重要;


其他均建议多模块,长期来看,约束是第一生产力,架构直接影响重构的成本。


引用《代码精进之路:从码农到工匠》中的两段话结尾:


要记住,留给公司一个方便维护、整洁优雅的代码库,是我们技术人员最高技术使命,也是我们对公司做出的最大技术贡献;

【防止破窗】首先我们要有一套规范,并尽量遵守规范,不要做“打破第一扇窗”的人;其次,发现“破窗”要及时修复,不要让问题进一步恶化。


相关文章
|
8月前
|
机器学习/深度学习 人工智能 并行计算
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
AI部署架构:A100、H100、A800、H800、H20的差异以及如何选型?开发、测试、生产环境如何进行AI大模型部署架构?
|
运维 负载均衡 安全
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
深度解析:Python Web前后端分离架构中WebSocket的选型与实现策略
393 0
|
8月前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
Java 编译器 Maven
使用intellij idea搭建SSM架构的maven项目 详细
使用intellij idea搭建SSM架构的maven项目 详细
267 4
|
存储 Cloud Native NoSQL
云原生时代的数据库选型与架构设计
云原生时代的数据库选型与架构设计
282 0
|
消息中间件 运维 NoSQL
基础架构组件选型及服务化
【10月更文挑战第15天】本文概述了分布式系统中常见的基础架构组件及其选型与服务化的重要性。
|
消息中间件 运维 NoSQL
基础架构组件选型及服务化
【10月更文挑战第2天】本文介绍了常见的分布式基础架构组件,包括分布式服务化框架(如Dubbo、Spring Cloud)、分布式缓存(如Redis、Memcached)、数据库及分布式数据库框架(如MySQL、TiDB)、消息中间件(如Kafka、RabbitMQ)和前端接入层(如LVS、Nginx)。文中探讨了组件选型问题,强调统一标准的重要性,避免重复劳动与维护难题。最后,提出基础架构服务化的必要性,通过标准化和平台化提升运维效率
|
监控 Java 关系型数据库
java版MES系统源码,后端采用 Spring Boot 多模块架构
MES系统采用Vue3的vue-element-plus-admin为后台,Spring Boot多模块架构,支持MySQL、Oracle等数据库,具备SaaS多租户功能。核心功能包括车间计划排程、工艺流程配置、生产质量管理、进度追踪、库存和排班管理等,全面覆盖生产运营关键环节。
497 0
java版MES系统源码,后端采用 Spring Boot 多模块架构
|
编解码 Linux 开发工具
Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明
支持x64_64架构、aarch64架构(需要glibc-2.21及以上版本的Linux系统, 需要libX11.so.6, 需要GLib–2.0, 需安装 libstdc++.so.6.0.21、GLIBCXX_3.4.21、 CXXABI_1.3.9)。
538 0
|
自然语言处理 监控 搜索推荐
《百炼成金-大金融模型新篇章》––12.应用场景与技术架构选型(1)
百炼必定成金,新质生产力会催生新质劳动力,谨以此文抛砖引玉,希望与业内的各位朋友一同探讨如何积极拥抱并运用大模型技术,以应对和驾驭不断变化的市场环境,实现科技金融持续稳定的提质增效和创新发展,携手开启金融大模型未来新篇章。
503 1

推荐镜像

更多