当前位置: 首页 > news >正文

SpringBoot-规划多模块目录结构

现在市面上SpringBoot项目一般分两种目录结构

  • 一个模块,每类功能分布在各个包下(结构简单,使用方便,分包明确)
  • 多模块划分,分父模块和子模块,有的子模块下再分子模块,一个子模块就是一种功能,此功能我称之为业务实现,或插件配置(结构相对复杂,前期搭建略显示繁琐,分类清晰细致,更符合多模块目录结构)

在这里插入图片描述
在这里插入图片描述使用哪种看个人喜好和考量,下面简单介绍下多模块目录结构:

父模块:zibocoder-parent,项目根目录,其 pom.xml 文件记录各子模块、依赖版本号管理、Maven 编译打包插件等

子模块:

  • zibocoder-auth(认证授权模块):包括用户登录、登出、获取用户信息及权限

  • zibocoder-modules(业务模块):如系统模块、博客模块业务实现等

  • zibocoder-plugins(插件模块):有的习惯用 xxx-common (公共模块)

    • 集成各类插件功能,如json插件,mybatisplus插件,redis插件,satoken插件,web插件等第三方插件以及自定义公共插件的集成
    • 使用了 bom 模式进行依赖管理,只是对版本进行管理,不会实际引入 jar

    zibocoder-plugins/pom.xml

    ...<modules><module>zibocoder-plugins-bom</module><module>zibocoder-plugins-satoken</module><module>zibocoder-plugins-web</module><module>zibocoder-plugins-mybatisplus</module><module>zibocoder-plugins-redis</module><module>zibocoder-plugins-common</module><module>zibocoder-plugins-json</module></modules>
    </project>
    

    zibocoder-plugins-bom/pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- bom --><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-bom</artifactId><version>1.0.0</version><packaging>pom</packaging><description>使用 BOM (Bill of Materials) 模式进行依赖管理管理多个插件的依赖版本</description><properties><zibocoder.version>1.0.0</zibocoder.version></properties><!-- 只是对版本进行管理,不会实际引入jar --><dependencyManagement><dependencies><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-satoken</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-web</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-mybatisplus</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-redis</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-common</artifactId><version>${zibocoder.version}</version></dependency><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-json</artifactId><version>${zibocoder.version}</version></dependency></dependencies></dependencyManagement>
    </project>
    

    pom.xml

    ...
    <dependencyManagement><dependencies><!-- plugins 的依赖配置 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-bom</artifactId><version>${zibocoder.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>...
    </dependencyManagement>
    

    如在 zibocoder-auth 模块中使用 zibocoder-plugins-satoken 插件,则在 zibocoder-auth/pom.xml 引入依赖如下:

    ...
    <dependencies><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-satoken</artifactId></dependency>...
    </dependencies>
    
  • zibocoder-starter(启动模块):项目启动,主程序入口

zibocoder-starter/pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.zibocoder</groupId><artifactId>zibocoder-parent</artifactId><version>1.0.0</version></parent><artifactId>zibocoder-starter</artifactId><description>启动服务模块,主程序入口</description><dependencies><!-- mysql驱动依赖 --><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!-- p6spy日志依赖 --><dependency><groupId>com.github.gavlyukovskiy</groupId><artifactId>p6spy-spring-boot-starter</artifactId></dependency><!-- Logback依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><!-- 系统模块依赖 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-system</artifactId></dependency><!-- 认证模块依赖 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-auth</artifactId></dependency><!-- 自定义json插件依赖,主要加载自定义json格式化配置 --><dependency><groupId>com.zibocoder</groupId><artifactId>zibocoder-plugins-json</artifactId></dependency></dependencies><build><finalName>${project.artifactId}</finalName> <!-- 生成jar的文件名,不指定名字默认以artifactId-version形式命名 --><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

如有帮到你可以点赞,收藏或鼓励一下(^_^),有什么疑问可以评论交流互相学习

在这里插入图片描述

http://www.dtcms.com/a/266933.html

相关文章:

  • 项目介绍:Awesome System Prompts
  • 免费PDF处理软件,支持多种操作
  • 开源项目XYZ.ESB:数据库到数据库(DB->DB)集成
  • 系统架构师
  • Class5多层感知机的从零开始实现
  • Linux awk 命令
  • 浅谈 webshell 构造之如何获取恶意函数
  • chrome插件合集
  • 4 位量化 + FP8 混合精度:ERNIE-4.5-0.3B-Paddle本地部署,重新定义端侧推理效率
  • 【LUT技术专题】CLUT代码讲解
  • 写一个Ununtu C++ 程序,调用ffmpeg API, 来判断一个数字电影的视频文件mxf 是不是Jpeg2000?
  • MSPM0G3507学习笔记(一) 重置版:适配逐飞库的ti板环境配置
  • 服装零售企业跨区域运营难题破解方案
  • 深度学习笔记29-RNN实现阿尔茨海默病诊断(Pytorch)
  • 25年Java后端社招技术场景题!
  • MyDockFinder 绿色便携版 | 一键仿Mac桌面,非常简单
  • 应用分发平台的重要性:构建、扩展和管理您的移动应用
  • VR 火化设备仿真系统具备哪些优势?​
  • MySQL 八股文【持续更新ing】
  • 机器学习路径规划中的 net 和 netlist 分别是什么?
  • 《推客分销系统架构设计:从零搭建高并发社交裂变引擎》
  • linux---------------进程信号(下)
  • 将制作的网站部署在公网
  • 电机转速控制系统算法分析与设计
  • 同步(Synchronization)和互斥(Mutual Exclusion)关系
  • 基于Apache MINA SSHD配置及应用
  • Python爬虫 模拟登录状态 requests版
  • 如何查看自己电脑的CUDA版本?
  • D3 面试题100道之(21-40)
  • 通过MaaS平台免费使用大模型API