💡 一则也许对你有用的小广告 🏆

欢迎飞飞程序员   ,你将获得:专属的实战项目(已更新的所有会员标识的项目都能学习) / 1v1 提问 / Java 学习路线 / PHP 学习路线 / 学习打卡 / 社群讨论

  • 正在进行中的项目:《FFBlog知识付费博客项目》 正在持续更新中,基于 Spring Boot 3.x + JDK 21...,点击查看 ;
  • 《从零开发:FFBlog知识付费博客项目(全栈开发)》 演示链接: https://ffblog.ffcxy.com/  ;

截止目前, 飞飞  正在疯狂爆肝实战项目,后续还会上新更多项目,目标是将所学知识开发成项目并且分享给大家,如知识付费系统, Ai系统, CMS系统,在线商城系统,等等 ,欢迎点击围观

一、一句话解释

Spring Boot 多模块 = 把一个大项目拆分成多个独立子模块(maven module),统一管理依赖、分工开发,最终打包运行其中一个启动模块,其他模块作为依赖被引用。 本质是 Maven 多工程聚合,不是 Spring Boot 独有的特性,只是 SpringBoot 项目最常用这种架构。

对比:单模块 → 所有代码写在一个项目里;多模块 → 拆成多个子工程,各司其职。

二、最常用分层结构

parent-project 【父工程,打包方式 pom,统一管理版本、依赖】
├── common        公共模块:工具类、常量、统一返回、异常、工具包(不启动,jar)
├── entity        实体模块:POJO、DTO、VO、数据库实体(jar)
├── mapper        数据访问:MyBatis Mapper、DAO(jar)
├── service       业务逻辑:接口 + 业务实现(jar)
└── admin-api     启动模块:Controller、SpringBoot启动类,对外提供接口(可打包jar运行)

依赖流向:api -> service -> mapper -> entity/common 只有 api 模块有 @SpringBootApplication 启动类,其他都是普通 jar 包,不能独立启动

三、核心两个角色

  1. 父工程(pom 类型)
    • packaging = pom
    • 定义 <modules> 包含所有子模块
    • 使用 dependencyManagement 统一锁定所有依赖版本(避免版本冲突)
    • 子模块继承父工程,不用重复写版本号
  2. 子模块(jar 类型)
    • 继承父 pom
    • 按需引入其他子模块作为依赖
    • 分为:公共基础模块、业务模块、启动入口模块

四、多模块好处

  1. 职责拆分,代码解耦:实体、工具、业务、控制器分离,便于维护
  2. 依赖复用:common、entity 可以被多个服务复用
  3. 分工协作:不同开发负责不同模块,减少代码冲突
  4. 统一版本管理:父工程管控所有 jar 版本,防止版本混乱
  5. 方便微服务演进:后续某个模块独立拆成微服务改动更小
上一篇 Flowbite库的核心函数initFlowbite在vue3中交互集成的使用
下一篇 什么是spring boot 中的依赖?

全部评论(0)

头像
😃 😁 😅 😂 😍 😜 😝 🤑 🥵 🥰 😙 😎 😵 😭 😱 😖 🥳 👽 🙈 🤡 😤 💣 💯 💢 ❤️ 👍 👏 👋 👌 🤏 🙏
还没有任何评论哟~