点击蓝字 关注我们

背景

项目为什么需要用多模块?springmvc难道还不够我们平常使用吗?

  1. 设计模式真言:“高内聚、低耦合”,springmvc项目,一般会把项目分成多个包:controller、service、dao、util等,但是随着项目的复杂性提高,想复用其他一个模块的话,因为是包的形式,剥离出来会比较困难,耦合性有点强,常用的方法就是复制代码修改,但是这样会做很多无用功与增加出错几率。

  2. springboot多模块简单来说,就是把按包分模块的模式,借助maven升级到jar的方式,抽象性更加强了,假如jar再升级到到war或者多个集合jar,就成微服务了,在多模块jar模式下可以将某个jar拿出来对外共用,能大大提高代码复用率与开发效率。

话不多说开搞

springboot多模块创建

父模块创建

  • 打开idea:选择Create New Project

或者去官网创建(跟idea创建项目是一样的,我这里用的是idea)

  • 然后选择Spring Initializr

  • 点击next之后—>基本设置

  • 点击next之后->添加依赖

  • 点击next之后->选择项目地址

  • 点击finish之后

子模块创建

  • 父项目名称->右键->new->moudle

  • 点击Spring Initializr(选择合适jdk版本)->next

  • 点击next之后->设置Maven Project 而不是跟父项目相同的Maven Pom

  • 点击next之后->添加依赖

  • 点击next->选择确认项目地址

  • 点击finish完成

然后再创建一个子模块multi-core 过程跟multi-controller一样,我这里就省略了。我们这里就暂时创建两个子模块。

  • 项目创建完成整体结构图

注:由于程序的主入口是multi-controller 所有 multi-core里面 application.properties MultiCoreApplication.java 文件都删除了

修改pom文件

1.修改父项目pom-修改完成如下所示(有注释)

<?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.0modelVersion>    <parent>        <groupId>org.springframework.bootgroupId>        <artifactId>spring-boot-starter-parentartifactId>        <version>2.4.1version>        <relativePath/>     parent>    <groupId>com.tinygraygroupId>    <artifactId>multi-parentartifactId>    <version>0.0.1-SNAPSHOTversion>    <name>multi-parentname>    <description>Demo project for Spring Bootdescription>

    <packaging>pompackaging>

    <modules>        <module>multi-controllermodule>        <module>multi-coremodule>    modules>

    <properties>        <java.version>1.8java.version>    properties>

    <dependencies>

        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-webartifactId>        dependency>        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starterartifactId>        dependency>        <dependency>            <groupId>org.projectlombokgroupId>            <artifactId>lombokartifactId>            <optional>trueoptional>        dependency>        <dependency>            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-starter-testartifactId>            <scope>testscope>        dependency>        <dependency>

            <groupId>org.springframework.bootgroupId>            <artifactId>spring-boot-testartifactId>            <version>2.0.1.RELEASEversion>            <scope>testscope>        dependency>    dependencies>

project>

2.修改子项目pom

  • multi-controller

<?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.0modelVersion>

    <artifactId>multi-controllerartifactId>    <version>0.0.1-SNAPSHOTversion>    <name>multi-controllername>    <description>Demo project for Spring Bootdescription>

    <parent>        <artifactId>multi-parentartifactId>        <groupId>com.tinygraygroupId>        <version>0.0.1-SNAPSHOTversion>    parent>

    <dependencies>

        <dependency>            <groupId>com.tinygraygroupId>            <artifactId>multi-coreartifactId>            <version>0.0.1-SNAPSHOTversion>        dependency>    dependencies>

    <build>        <plugins>            <plugin>                <groupId>org.springframework.bootgroupId>                <artifactId>spring-boot-maven-pluginartifactId>                <configuration>                    <mainClass>com.tinygray.multicontroller.MultiControllerApplicationmainClass>                    <layout>JARlayout>                configuration>            plugin>        plugins>    build>

project>
  • multi-core

<?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.0modelVersion>

    <artifactId>multi-coreartifactId>    <version>0.0.1-SNAPSHOTversion>    <name>multi-corename>    <description>Demo project for Spring Bootdescription>

    <parent>        <artifactId>multi-parentartifactId>        <groupId>com.tinygraygroupId>        <version>0.0.1-SNAPSHOTversion>    parent>

    <dependencies>

    dependencies>

project>

springboot多模块创建完成之后验证启动

验证

你如何知道你的多模块项目搭建完成并能成功启动了呢?看下图:

出现以上图片结果就是你的多模块项目创建完成了并可以启动了

启动

  • 找到启动类

  • 执行启动类

  • 执行成功

  • 浏览器打开 http://localhost:8080

  • 出现以上结果表示多模块项目已经搭建完成了

写一个测试接口访问

  • 创建两个java文件(一个实体类User一个UserController)

  • User.java、UserController.java文件内容-很简单一个测试接口

  • 浏览器输入http://localhost:8080/user/getUserInfo

  • 出现以上结果就表示测试成功了。

  • 项目地址:

    • 搜索公众号:Madison龙少

    • 回复 springboot-multi-module 获取资源

结束语

扫码关注我们

公众号|Madison龙少

微信号|公众号点击'联系方式'菜单获取

期待你的

分享

点赞

在看

idea 多模块build_[史上最详细]springboot创建基于maven的多模块项目相关推荐

  1. 手把手教你利用hexo搭建自己的博客网站----史上完整详细版(基于GitHub for mac)

    文章目录 一.安装Node.js 1.1 下载完该安装包,直接进行安装即可. 1.2 打开终端,切换至root用户. 1.3 查看一下node的版本 1.4 查看npm的版本 二.安装hexo 2.1 ...

  2. 史上最详细springboot vue UEditor整合(包括遇到的各种坑)

    Vue中引入UEditor看这篇教程https://blog.csdn.net/kshon/article/details/102667318 接下来说说springboot中配置UEditor遇到的 ...

  3. (史上最详细)C++实战-基于STL 演讲比赛流程管理系统

    项目需求 本案例来源于黑马 C++视频课程,以下内容为学习笔记 1.1 比赛规则 学校举行一场演讲比赛,共有12个人参加.比赛共两轮,第一轮为淘汰赛,第二轮为决赛. 比赛方式:分组比赛,每组6个人:选 ...

  4. python导入同级包_python小课堂15 - 史上最详细的包和模块import讲解篇

    python小课堂15 - 史上最详细的包和模块import讲解篇 前言 在大量的代码设计中,我们不可能将所有代码都写在一个.py文件,所以有了包.模块,而为了代码可以重复利用(复用性),就有了类.函 ...

  5. python 引入同一路径的类_python小课堂15 - 史上最详细的包和模块import讲解篇

    python小课堂15 - 史上最详细的包和模块import讲解篇 前言 在大量的代码设计中,我们不可能将所有代码都写在一个.py文件,所以有了包.模块,而为了代码可以重复利用(复用性),就有了类.函 ...

  6. 【python小课堂专栏】python小课堂15 - 史上最详细的包和模块import讲解篇

    python小课堂15 - 史上最详细的包和模块import讲解篇 前言 在大量的代码设计中,我们不可能将所有代码都写在一个.py文件,所以有了包.模块,而为了代码可以重复利用(复用性),就有了类.函 ...

  7. 史上最详细的LXR安装介绍

    史上最详细的LXR安装介绍(Ubuntu14.04+Apache2.4.7) 简介: LXR (Linux Cross Reference)是一个通过交叉索引方便用户查看项目源代码的工具.项目地址:h ...

  8. 史上最详细sql注入wp

    文章目录 sql注入wp(史上最详细) 前言 什么是SQL注入? SQL注入的原理 常见的注入方式 常见绕过技巧 常见防控SQL注入的方法 手工查询语句 Basic Challenges Less-1 ...

  9. 史上最详细的Pytorch版yolov3代码中文注释详解(四)

    史上最详细的Pytorch版yolov3代码中文注释详解(一):https://blog.csdn.net/qq_34199326/article/details/84072505 史上最详细的Pyt ...

最新文章

  1. 服务器可视化_系统管理员不可错过的6款服务器监控工具
  2. linux uts namespace 提供了主机名和域名的隔离 docker中被用到
  3. [概统]本科二年级 概率论与数理统计 第七讲 期望、方差与相关性
  4. C++引用(Reference)
  5. 【GamePlay】入门篇
  6. java调用shell脚本并传递参数
  7. 猫和老鼠 蓝桥杯/手速/暴力练习赛(暴力搜索)
  8. java catch中 return_JAVA中try、catch、finally带return的执行顺序总结
  9. 华为P7电信4G版刷机包 EMUI2.3 官方B125 第3版 精简 ROOT
  10. const char * char * const
  11. 双系统ubuntu无法进入_win10下安装ubuntu双系统
  12. TFTPClient
  13. linux看门狗机制
  14. html四边形布局,canvas四边形.html
  15. Raspberry Pi Pico实践系列1-Windows环境下树莓派Pico迷你开发板MicroPython快速上手实践
  16. 【Pytorch】量化
  17. 2019年厦门国际银行“数创金融杯”数据建模大赛总结
  18. 凉开水泡绿茶有利降血糖
  19. a19_Python文件I/O---学习笔记
  20. rtx服务器设置 文件,rtx 服务器 文件传输 配置

热门文章

  1. “约见”面试官系列之常见面试题之第一百零三篇之vue-router实现路由懒加载(建议收藏)
  2. “约见”面试官系列之常见面试题之第六十四篇之call和apply区别(建议收藏)
  3. 前端学习(2080):计算属性和methods得对比
  4. plsql轻量版触发器
  5. oracle之基本的sql_select语句全
  6. 前端学习(1365):express框架导读
  7. 前端学习(796):字符串不可变
  8. 第二十一期:老大难的GC原理及调优,这全说清楚了
  9. java学习(46):无参带返回
  10. centos7搭建apache服务器(亲测可用)