当前位置: 首页 > 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.xdnf.cn/news/1080757.html

相关文章:

  • 从0开始学习R语言--Day38--辛普森多样性指数
  • Nuxt 3 面试题合集(中高级)
  • vue3 获取选中的el-table行数据
  • 浅谈 webshell 构造之如何获取恶意函数
  • 「AI产业」| 《中国信通院华为:智能体技术和应用研究报告》
  • Response对象
  • Excel 如何处理更复杂的嵌套逻辑判断?
  • 网安系列【4】之OWASP与OWASP Top 10:Web安全入门指南
  • Flink Vitess CDC 环境配置与验证
  • QString 转 varchar
  • 【网络与系统安全】域类实施模型DTE
  • 数字资产革命中的信任之锚:RWA法律架构的隐形密码
  • ORACLE 日常查询
  • 浏览器(Chrome /Edge)高效使用 - 内部命令/快捷键/启动参数
  • vue3 el-table 行筛选 设置为单选
  • python打卡day57@浙大疏锦行
  • C#引用类型
  • 代码随想录算法训练营第四十六天|动态规划part13
  • WPF_Reactive_控件调试方法
  • PortSwigger Labs SQLInjection LAB6-7
  • Golang 运算符
  • 3D建模公司的能力与技术
  • 【Spring Boot】Druid 连接池 YAML 配置详解
  • 三、docker软件安装:gitlab,nexus,mysql8,redis,nacos,nginx
  • Apache RocketMQ进阶之路阅读笔记和疑问
  • 高职院校“赛岗课”一体化网络安全实战类人才培养方案
  • python -二叉树路径和为指定的值(根节点到叶子节点)
  • 译码器Multisim电路仿真汇总——硬件工程师笔记
  • 【机器学习深度学习】什么是下游任务模型?
  • 【STM32实践篇】:I2C驱动编写