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

如何借助Idea创建多模块的SpringBoot项目

目录

    • 1.1、前言
    • 1.2、开发环境
    • 1.3、项目多模块结构
    • 1.4、新建父工程
    • 1.5、创建子模块
    • 1.6、编辑父工程的pom.xml文件

1.1、前言

        springmvc项目,一般会把项目分成多个包:controler、service、dao、utl等,但是随着项目的复杂性提高,想复用其他一个模块的话,因为是包的形式,剥离出来会比较困难,耦合性有点强,常用的方法就是复制代码修改,但是这样会做很多无用功与增加出错几率。
        springboot多模块简单来说,就是把按包分模块的模式,借助maven升级到jar的方式,抽象性更加强了,假如iar再升级到到war或者多个集合jar,就成微服务了,在多模块jar模式下可以将某个jar拿出来对外共用,能大大提高代码复用率与开发效率。同时也能方便项目中所依赖的第三方Jar包的版本的统一管理。

1.2、开发环境

        本文将采用Java语言,基于JDK17基础环境、Maven、Idea等工具进行开发实现。JDK环境的安装请参考JDK安装部署。具体如下:

环境名称版本号
JDK17.0.7
Maven3.6.3
Idea2019.3.5
Spring Boot3.2.4

1.3、项目多模块结构

        本文通过构建一个包含5个子模块的项目,来演示 SpringBoot 在 Maven 环境的多模块构建过程。具体如下图所示:
图片1

  • Common模块:该模块主要是通用工具类、错误码、公共数据对象管理等;
  • API模块:主要是外部依赖服务管理;
  • Web模块:负责接收Http/RPC请求、路由到指定Controller;
  • Service模块:负责业务逻辑处理;
  • DAO模块:负责数据访问;

1.4、新建父工程

        通过Spring Lnitalizer创建父工程,并设置响应的参数即可,具体操作步骤如下。
        (1)File ->New Project ,在参数页面设置JDK版本,然后点击下一步即可,具体如下:
图片2
        (2)在项目元数据参数页面根据实际需要设置对应的参数即可,具体如下:
图片3
        (3)在项目依赖参数页面根据实际需要设置对应的参数即可,具体如下:
图片4
        (4)在项目位置参数页面根据实际需要设置对应的参数即可,具体如下:
图片5
        (5)创建好后删除刚创建工程里不需要的文件, 只保留:.idea 文件夹 、项目 pom 文件、以及一个 *.iml 文件,删除前的项目结构如下:
图片6
        删除后的项目结构如下:
图片7

1.5、创建子模块

        (1)右键点击父工程,选择 New -> Module… 创建子模块。这里依次创建 common、api、dao、service 和 web 共 5 个模块。

注意:除了 web 子模块创建时选择添加 Spring Web 依赖(当然也可以创建时不添加,等后面再手动编辑 pom.xml 文件添加),其他模块暂时不添加依赖。

        在新建模块参数页面根据实际情况设置参数即可,具体如下:
图片8
图片9
图片10
        (2)重复上述步骤新建common、api、service 等其他模块。
        (3)将所有子模块的 mvnw、mvnw.cmd 文件及 .mvn 文件夹全部删除,具体如下:
图片11
        (4)参照新建父工程的方式新建web模块。
        (5)对于 src 里的内容,只保留 web 的启动类和配置文件,其他子模块的的启动类和配置文件都删除。

1.6、编辑父工程的pom.xml文件

        将父工程 pom.xml 文件修改成如下内容,里面声明该父工程包含的子模块,同时抽取统一的配置信息和依赖版本控制,这样可以方便子 pom 直接引用,简化子 pom 的配置。

1、多模块项目中,父模块打包类型必须是 pom。
2、因为开发框架是 spring boot,父模块默认继承 spring-boot-starter-parent,因此可以删除 spring-boot-starter 和 spring-boot-starter-test 依赖(祖先已经包含了)

        父工程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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><modules><module>common</module><module>api</module><module>dao</module><module>service</module><module>web</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>cn.cerc.smart</groupId><artifactId>design</artifactId><version>0.0.1-SNAPSHOT</version><name>design</name><description>SpringBoot多模块应用</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
http://www.lryc.cn/news/332276.html

相关文章:

  • 爬虫 新闻网站 并存储到CSV文件 以红网为例 V1.0
  • CentOS 使用 Cronie 实现定时任务
  • java生成word
  • C语言中的结构体:揭秘数据的魔法盒
  • Listener
  • 单细胞RNA测序(scRNA-seq)SRA数据下载及fastq-dumq数据拆分
  • 金蝶Apusic应用服务器 未授权目录遍历漏洞复现
  • 成都百洲文化传媒有限公司电商服务的新领军者
  • 从无到有开始创建动态顺序表——C语言实现
  • Unix 网络编程, Socket 以及bind(), listen(), accept(), connect(), read()write()五大函数简介
  • 【附下载】2024全行业数字化转型企业建设解决方案PPT合集
  • 【QT+QGIS跨平台编译】056:【pdal_lepcc+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 蓝桥集训之斐波那契数列
  • 程序员的工资是多少,和曹操有莫大的关系
  • 使用Element Plus
  • 单例(Singleton)设计模式总结
  • LeetCode每日一题之专题一:双指针 ——快乐数
  • Docker Desktop 不支持 host 网络模式
  • Linux网络编程二(TCP图解三次握手及四次挥手、TCP滑动窗口、MSS、TCP状态转换、多进程/多线程服务器实现)
  • 【云原生篇】K8S之Job 和 CronJob
  • PHP8.3-ZTS版本安装流程以及添加扩展
  • RabbitMQ系统监控、问题排查和性能优化实践
  • 【华为OD机试】根据IP查找城市(贪心算法—JavaPythonC++JS实现)
  • css:阴影效果box-shadow
  • Scala第十九章节(Actor的相关概述、Actor发送和接收消息以及WordCount案例)
  • 蓝桥杯杯赛之深度优先搜索优化《1.分成互质组》 《 2.小猫爬山》【dfs】【深度搜索剪枝优化】【搜索顺序】
  • 软件设计原则:依赖倒置
  • 03-自媒体文章发布
  • Oracle中实现一次插入多条数据
  • 【C++入门】关键字、命名空间以及输入输出