SpringBoot多模块项目初始化搭建

news2024/11/25 12:57:30

在这里插入图片描述


🎶 文章简介:SpringBoot多模块项目初始化搭建
💡 创作目的:详细介绍SpringBoot多模块项目的搭建
☀️ 今日天气:阳光明媚
📝 每日一言:不求事事圆满,但求事事甘心。


文章目录

    • 1、新建父模块项目
      • 1.1、SpringBoot项目新建
      • 1.2、maven信息配制
      • 1.3、删除多余文件
      • 1.4、pom.xml修改
      • 1.5、pom.xml文件
    • 2、新建子模块项目
      • 2.1、Web模块[interface模块]
      • 2.2、Business模块[service模块]
      • 2.3、Mapper模块[dao模块]
      • 2.4、Api模块[实体类存放]
      • 2.5、common模块[共用类存放]
    • 3、模块依赖关系配制
      • 3.1、保留web模块主启动类
      • 3.2、模块依赖引入
        • 3.2.1、web模块pom.xml
        • 3.2.2、business模块pom.xml
        • 3.2.3、mapper模块pom.xml
        • 3.2.4、api模块pom.xml
        • 3.2.5、依赖引入成功
      • 3.3、基础spring依赖引入
    • 4、启动项目
      • 4.1、Web模块配制文件配制
      • 4.2、主启动类配制
      • 4.3、启动项目

文章目录

    • 1、新建父模块项目
      • 1.1、SpringBoot项目新建
      • 1.2、maven信息配制
      • 1.3、删除多余文件
      • 1.4、pom.xml修改
      • 1.5、pom.xml文件
    • 2、新建子模块项目
      • 2.1、Web模块[interface模块]
      • 2.2、Business模块[service模块]
      • 2.3、Mapper模块[dao模块]
      • 2.4、Api模块[实体类存放]
      • 2.5、common模块[共用类存放]
    • 3、模块依赖关系配制
      • 3.1、保留web模块主启动类
      • 3.2、模块依赖引入
        • 3.2.1、web模块pom.xml
        • 3.2.2、business模块pom.xml
        • 3.2.3、mapper模块pom.xml
        • 3.2.4、api模块pom.xml
        • 3.2.5、依赖引入成功
      • 3.3、基础spring依赖引入
    • 4、启动项目
      • 4.1、Web模块配制文件配制
      • 4.2、主启动类配制
      • 4.3、启动项目

后端项目采用多模块项目模式来进行编写

1、新建父模块项目

1.1、SpringBoot项目新建

Name:MuZiNan-Server => [项目名称]

Location:D:\project\many\MuZiNan-Server => [项目位置 ]

Jdk:1.8 => [版本]

packing:jar => [打包方式]

在这里插入图片描述

springboot版本随意,先选择一个web依赖即可!

在这里插入图片描述

1.2、maven信息配制

IDEA默认maven配制下载速度极慢,我们将其修改为我们自己的配置。
Maven home path: Maven安装位置

User setting file: setting.xml文件位置

Local respository:依赖存放仓库位置

在这里插入图片描述

1.3、删除多余文件

除了pom.xml文件保留,其他文件全部删除

在这里插入图片描述

删除完毕之后

在这里插入图片描述

1.4、pom.xml修改

1、SpringBoot版本修改为 2.5.5版本

2、项目基本信息修改

3、版本控制 依赖的版本管理通过properties内部进行控制

4、依赖管理 [dependencyManagement]

使用dependencyManagement包裹dependencies,这样可以做到依赖的声明,但是不引用。

请添加图片描述

1.5、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>


    <!-- SpringBoot 版本 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.5</version>
        <relativePath/>
    </parent>

    <!-- 木字楠服务基本信息 -->
    <groupId>space.muzinan</groupId>
    <artifactId>MuZiNan-Server</artifactId>
    <version>1.0</version>
    <name>MuZiNan-Server</name>
    <description>木字楠博客后台服务~</description>

    <!-- 版本控制 -->
    <properties>
        <java.version>1.8</java.version>
        <!--===================== SpringBoot相关依赖版本  =========================-->
        <springboot.version>2.5.5</springboot.version>
    </properties>

    <!-- 依赖管理 -->
    <dependencyManagement>
        <dependencies>
            <!--===================== SpringBoot相关依赖  =========================-->
            <!-- Web模块 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${springboot.version}</version>
            </dependency>
            <!-- 测试模块 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${springboot.version}</version>
            </dependency>
        </dependencies>

    </dependencyManagement>

</project>

2、新建子模块项目

右击父级项目

New -> Module

在这里插入图片描述

2.1、Web模块[interface模块]

新建一个maven项目

父级模块选用MuZiNan-Server

Jdk版本与父级保持一致

GroupId、ArtifactId 默认即可

在这里插入图片描述

新建成功

在这里插入图片描述

2.2、Business模块[service模块]

新建一个maven项目

父级模块选用MuZiNan-Server

Jdk版本与父级保持一致

GroupId、ArtifactId 默认即可

在这里插入图片描述

新建成功

在这里插入图片描述

2.3、Mapper模块[dao模块]

新建一个maven项目

父级模块选用MuZiNan-Server

Jdk版本与父级保持一致

GroupId、ArtifactId 默认即可

在这里插入图片描述

新建成功

在这里插入图片描述

2.4、Api模块[实体类存放]

新建一个maven项目

父级模块选用MuZiNan-Server

Jdk版本与父级保持一致

GroupId、ArtifactId 默认即可

在这里插入图片描述

新建成功

在这里插入图片描述

2.5、common模块[共用类存放]

新建一个maven项目

父级模块选用MuZiNan-Server

Jdk版本与父级保持一致

GroupId、ArtifactId 默认即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8jMraeHK-1660199324759)(D:\note\noteFile\日常笔记\木字楠博客\image-20220811115109190.png)]

新建成功

3、模块依赖关系配制

3.1、保留web模块主启动类

只保留web模块中的主启动类,删除其他模块的主启动类(多模块项目仅需要一个主启动类)

请添加图片描述

修改主启动类名称(当然也可以不修改,单纯觉得Main很难看,不像是SPringBoot项目)

在这里插入图片描述

3.2、模块依赖引入

项目中的各个模块的职能:

web模块: 服务的接口入口,也就是存放Controller以及runner等…

business模块: 存放业务具体的实现类的位置以及相关配置信息等…

mapper模块: 存放Mapper接口以及部分配置信息等…

api模块: 存放实体类api接口以及request等信息…

common模块: 存放共用工具类共用服务等…

根据MVC思想,我们正常的思路是通过controller来调用service层,然后通过service层调用dao层来实现一个具体的业务

多模块项目也是如此,只不过各个部分被分割为不同模块,我们需要使用依赖引入的方式来联通各个模块,是各个模块之间可以进行调用

引入顺序:web模块 引入 business模块(这样controller中可以调用business中的具体实现类)

​ business模块 引入 mapper模块(business引入了mapper,controller可以间接调用mapper)

​ mapper模块 引入 api模块(同上)

​ api模块 引入 common模块(同上)

${parent.groupId}:父级模块的groupId

${parent.version}:父级模块的version

3.2.1、web模块pom.xml

<dependencies>
	<!-- Business模块引入 -->
	<dependency>
		<groupId>${parent.groupId}</groupId>
		<artifactId>muzinan-business</artifactId>
		<version>${parent.version}</version>
	</dependency>
</dependencies>

3.2.2、business模块pom.xml

<dependencies>
	<!-- Mapper模块引入 -->
	<dependency>
		<groupId>${parent.groupId}</groupId>
		<artifactId>muzinan-mapper</artifactId>
		<version>${parent.version}</version>
	</dependency>
</dependencies>

3.2.3、mapper模块pom.xml

<dependencies>
	<!-- Api模块引入 -->
	<dependency>
		<groupId>${parent.groupId}</groupId>
		<artifactId>muzinan-api</artifactId>
		<version>${parent.version}</version>
	</dependency>
</dependencies>

3.2.4、api模块pom.xml

<dependencies>
	<!-- Common模块引入 -->
	<dependency>
		<groupId>${parent.groupId}</groupId>
		<artifactId>muzinan-common</artifactId>
		<version>${parent.version}</version>
	</dependency>
</dependencies>

3.2.5、依赖引入成功

依赖引入成功,这样我们的几个模块以及相互引入成功

请添加图片描述

3.3、基础spring依赖引入

因为我们所有模块都需要使用spring依赖信息,所有我们会将所有的基础依赖common模块进行引入。

请添加图片描述

4、启动项目

4.1、Web模块配制文件配制

请添加图片描述

4.2、主启动类配制

请添加图片描述

4.3、启动项目

请添加图片描述
在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法——Java实现单链表、双向链表、环型链表、约瑟夫

目录 一、单链表 1.1 单链表基本介绍 1.2 分析与实现带head头结点的单向链表 1.2.1第一种方式&#xff1a; 尾部添加元素示意图 1.2.2 尾部添加元素的代码实现以及遍历链表的实现 1.2.3 第二种方式&#xff1a; 根据排名将节点插入到指定位置的示意图 1.2.4 根据排名将节…

MySQL入门到精通经典50题,看这一篇就够了

MySQL入门到精通经典50题学习笔记 pdf获取方式&#xff0c;公众号&#xff1a;每天都要努力coding回复&#xff1a;mysql经典50题 文章目录MySQL入门到精通经典50题学习笔记[toc]MySQL安装教程详解数据预览sql建表语句1.查询" 01 “课程比” 02 "课程成绩高的学生的…

基于鸽群算法优化的lssvm回归预测-附代码

基于鸽群算法优化的lssvm回归预测 - 附代码 文章目录基于鸽群算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于鸽群算法优化的LSSVM4.测试结果5.Matlab代码摘要&#xff1a;为了提高最小二乘支持向量机&#xff08;lssvm&#xff09;的回归预测准确率&#xff0c;对…

你的项目需要自动化测试吗?看看这篇文章再说吧

什么是自动化测试&#xff1f; 通过代码的方式&#xff0c;实现测试用例的自动运行&#xff0c;评估运行结果&#xff0c;并对测试结果及异常情况进行记录。 为什么进行自动化测试&#xff1f; 纯手工测试会有好多重复性的操作&#xff0c;浪费时间&#xff0c;而且频繁的回…

央企招聘:中国大唐集团2023年度公开招聘公告

中国大唐集团科学技术研究总院有限公司&#xff08;以下简称科研总院&#xff09;是世界500强企业——中国大唐集团有限公司&#xff08;以下简称集团公司&#xff09;的全资子公司&#xff0c;是集团公司的科技创新中心、战略参谋本部、成果孵化中心、技术服务保障基地和科技人…

Qt+VS+VTK综合开发环境配置

说明 本文旨在介绍一种个人常用的开发环境&#xff0c;主要解决在VS中开发Qt项目的部分问题&#xff0c;以及解决使用基于Qt的VTK库开发时可能遇到的部分问题&#xff0c;并通过合理的配置提升新项目搭建时间 该教程使用版本为VS2017&#xff0c;Qt5.14.2以及VTK8.2&#xff…

git_No.1_版本管控的全流程

文章目录1.获取Git仓库1.1 已存在目录中初始化仓库1.2 克隆一个仓库2. 将变更提交到仓库2.1 查看当前文件状态2.2 跟踪新文件2.3 暂存已修改的文件2.4 忽略文件2.5 查看已暂存和未暂存的修改2.6 提交更新2.7 跳过使用暂存区2.8 移除文件3. 查看提交历史4.远程仓库4.1 查看远程仓…

HTTP介绍

目录 1.什么是HTTP&#xff1f; 2.HTTP的特点 3.HTTP的优点和缺点 4.HTTP请求数据格式 5.HTTP响应数据格式 6.GET请求和POST请求的区别 7.状态码分类说明 8.查看发送的请求数据包方式 1.什么是HTTP&#xff1f; Hyper Text Transfer Protocol,超文本传输协议&#xff…

[036]基于Vue+Nodejs的网上作业批改系统(含源码、数据库、万字课设报告)

文章目录一、项目介绍二、源码获取一、项目介绍 网络作业提交与批改系统&#xff1a;超强的作业批改项目&#xff0c;技术栈是VueNodeMysql&#xff0c;最重要的是有超详细的万字报告&#xff0c;一劳永逸&#xff0c;可冲~ 主要功能介绍&#xff1a; 1.管理员功能模块 管理员…

分享几个宝藏微信小程序

1.有数鸟&#xff1a;了解会员在各平台的消费明细 平时我们看视频听音乐&#xff0c;我们用的很多vip&#xff0c;你还记得你注册了哪些应用吗&#xff1f;有了这个小程序&#xff0c;就可以帮你记录每个平台的付款详情&#xff0c;以及总支出。 当我们添加会员项目时&#xff…

基于java+springboot+mybatis+vue+mysql的乒乓球预约管理系统

项目介绍 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;乒乓球馆预约管理系统 也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变…

基于C+++FLTK实现(WinForm)超市收银系统【100010032】

超市收银系统 Supermarket POS system 本次大作业是利用 C语言&#xff0c;基于 FLTK 图形库来设计超市收银系统。首先介绍程序的设计思想&#xff1a; 这套程序完全是基于题目所给的要求逐条逐步设计的。我把程序实现大致分为数据层面和图形层面。 数据层面&#xff1a; 程…

抖音视频怎么拼接?分享一款功能强大的软件

抖音视频怎么拼接&#xff1f;利用软件就很方便&#xff0c;所以抖音视频拼接可以通过操作简单的视频软件来辅助比较简单。就比如万兴喵影&#xff0c;就是一款操作简单、功能齐全的视频编辑器&#xff0c;很适合新手小白和半专业人士。 用万兴喵影做视频拼接&#xff0c;只需要…

扩散模型类似的方式训练text_to_text可不可以

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 # 使用 64*64 图 写入 16号字体 16个字 # 每组数据 的 文字 是连续的 # 三张图组成一个训练 # 至少48 个字符训练一次 # 选择好自己的文本数据集

Springboot整合Netty,自定义协议实现

Springboot整合Netty&#xff0c;自定义协议实现 Springboot整合Netty 新建springboot项目&#xff0c;并在项目以来中导入netty包&#xff0c;用fastjson包处理jsonStr。 <!-- netty --><dependency><groupId>io.netty</groupId><artifactId>…

Unity物理系统-物理材质-Collider碰撞体的弹力不够大如何处理

物理材质Physic Material&#xff1b; 当碰撞器发生碰撞的时候&#xff0c;具有该材质的游戏物体就会具有该材质的属性&#xff1b; Step1&#xff1a;在Project窗口下新建Physic Material&#xff08;命名为mat&#xff09;&#xff0c;并更改其弹力参数为1 Step2&#xff1a…

408 考研《操作系统》第二章第七节:死锁和死锁的三种处理策略(预防死锁、避免死锁、检测和解除)

文章目录1.死锁1.1 什么是死锁&#xff1f;1.2 死锁、饥饿、死循环的区别1.3 死锁产生的必要条件1.4 什么时候会发生死锁&#xff1f;1.6 总结2. 死锁的处理策略——预防死锁2.1 破坏互斥条件2.2 破坏不剥夺条件2.3 破坏请求和保持条件2.4 破坏循环等待条件2.5 总结3. 死锁的处…

chatgpt+mirai实现QQ机器人

chatGPTbot 配合mirai机器使用 安装 Java &#xff08;版本必须 > 11&#xff09; 下载Mirai 控制台 https://github.com/iTXTech/mirai-console-loader/releases 手动安装插件mirai-api-http 1.双击mcl.cmd 或./mcl 运行 Mirai Console 生成 plugins 文件夹 2.从 ht…

Android基于开源项目搭建自己的技术堆栈

一、app的整体架构 从较高的层次讲&#xff0c;一个APP的整体架构可以分为两层&#xff0c;即应用层和基础框架层。 1、应用层专注于行业领域的实现&#xff0c;如金融、支付、地图、社交等&#xff0c;它直接面向用户&#xff0c;是用户对产品的第一层感知。 2、基础框架层…

从安装过程品国产Linux操作系统的技术来源与异同之处

作者&#xff1a;IT圈黎俊杰 使用Linux操作系统的第一步无疑是安装&#xff0c;本文通过作者亲手对多个国外主流开源操作系统、多个主流国产操作系统的安装过程进行记录与对比&#xff0c;让大家可以借助安装过程的界面风格、页面布局、功能等&#xff0c;细细的品一下国产Linu…