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

点击蓝字 关注我们 

背景

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

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

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

话不多说开搞

springboot多模块创建

父模块创建

  • 打开idea:选择Create New Project

422ab4927b626c7af9cb17bf11b8d85a.png

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

73634ecac40bd6dcc4582b1fc15d4552.png

  • 然后选择Spring Initializr

435c823437e454f267af6fa046604400.png

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

14469dd942dad758fde97a79fdc33aa7.png

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

6fb8ac2a1fb4556f832383476ccff252.png

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

ebbe2a618e5a2bf2110eb78804679710.png

  • 点击finish之后

83b14b0cba9203fa3b0c9c836a3ad377.png

子模块创建

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

e0b6e086799d702d9dd27103b8af074c.png

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

ae97af68e0b01bc022db15645990030e.png

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

3617eaf05a4a2ea914550c5bab53008c.png

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

551b49decab4613c34c6bccbe8176507.png

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

dcb7e3308afca13febc003cd4c8bbd78.png

  • 点击finish完成

82dcc034d93ff1d0184f182ceafa8858.png

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

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

5e60b93fbe5556b1935bfae2f90a6ba7.png

注:由于程序的主入口是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多模块创建完成之后验证启动

验证

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

6472f9d2d46c5d3b91e3310d3bd4311b.png

f128f8c5d38b1bdaf488bf50a2a3b607.png

43a647b15cdbf87887de101d69eff89f.png

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

启动

  • 找到启动类

968ba089c199f45bce27851ac8648c6f.png

  • 执行启动类

b14f5d06c04229c40e209ae1a0f1cbf7.png

  • 执行成功

7f3ddccb6368aa3fc1ee41ff0020d6dc.png

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

a6a11656101094696628b50066906902.png

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

写一个测试接口访问

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

208946251279c4591cf71e0502a980f3.png

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

37ab9b8a636949f3e222a42a7a7898f5.png

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

aa7cae6a98be08c451184930410f939a.png

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

  • 项目地址:

    • 搜索公众号:Madison龙少

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

结束语

7119841b19d2ab949e12f95710fe2372.png

扫码关注我们

公众号|Madison龙少

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

期待你的

分享

点赞

在看

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

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

相关文章

Vue中 $ref 的用法

ref 被用来给DOM元素或子组件注册引用信息。引用信息会根据父组件的 $refs 对象进行注册。如果在普通的DOM元素上使用&#xff0c;引用信息就是元素; 如果用在子组件上&#xff0c;引用信息就是组件实例 注意&#xff1a;只要想要在Vue中直接操作DOM元素&#xff0c;就必须用r…

Nginx服务器之基础学习

一、Nginx介绍 nginx&#xff1a;Nginx是一种软件服务器&#xff08;轻量级&#xff09;&#xff0c;故它最主要的功能就是可以与服务器硬件结合&#xff0c;我们的应用程序可以放在nginx服务器上进行发布&#xff0c;已达到让网民浏览的效果。除此自外&#xff0c;Nginx是一种…

工作44:阅读代码1 dictionary

dictionary tabmixin 这个是dictionary混入 create里面有混入addedit addedit方法

mysql开启布隆过滤器_海量数据去重之布隆过滤器

背景在使⽤word⽂档时&#xff0c;word如何判断某个单词是否拼写正确&#xff1f;⽹络爬⾍程序&#xff0c;怎么让它不去爬相同的url⻚⾯&#xff1f;垃圾邮件(短信)过滤算法如何设计&#xff1f;公安办案时&#xff0c;如何判断某嫌疑⼈是否在⽹逃名单中&#xff1f;缓存穿透问…

linux 中 svn 服务器搭建 重启

鉴于在搭建时&#xff0c;参考网上很多资料&#xff0c;网上资料在有用的同时&#xff0c;也坑了很多人 本文的目的&#xff0c;也就是想让后继之人在搭建svn服务器时不再犯错&#xff0c;不再被网上漫天的坑爹作品所坑害&#xff0c;故此总结 /******开始*********/ 系统环境&…

mysql master host_mysql异步备份的有关问题,MASTER_HOST可否指定多个

mysql异步备份的问题&#xff0c;MASTER_HOST可否指定多个&#xff1f;mysql数据库提供了一种主从备份的机制&#xff0c;其实就是把主数据库的所有的数据同时写到备份数据库中。实现mysql数据库的热备份。主库#数据库的id这个应该默认是1就不用改动server-id1#日志文件的名称&…

Spring Boot快速入门

安装 安装依赖 maven是一个依赖管理工具&#xff0c;我们利用maven进行构建。创建一个maven项目&#xff0c;在pom.xml里面添加依赖项 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmln…

前端学习(2465):ajax发送请求

原文链接&#xff1a;https://www.cnblogs.com/0x29a/p/11231950.html 1. 创建XMLHttpRequest异步对象 步骤一代码引自&#xff1a;https://www.w3school.com.cn/ajax/ajax_xmlhttprequest_create.asp var xhr; if (window.XMLHttpRequest){// code for IE7, Firefox, Chrome, …

mysql数据库with ur_Python使用MySQL数据库(新)

一&#xff0c;安装mysql如果是windows用户&#xff0c;mysql的安装非常简单&#xff0c;直接下载安装文件&#xff0c;双击安装文件一步一步进行操作即可。Linux 下的安装可能会更加简单&#xff0c;除了下载安装包进行安装外&#xff0c;一般的linux仓库中都会有mysql&#x…

洛谷——P1067 多项式输出

https://www.luogu.org/problem/show?pid1067#sub 题目描述 一元 n 次多项式可用如下的表达式表示&#xff1a; 其中&#xff0c;aixi称为 i 次项&#xff0c;ai 称为 i 次项的系数。给出一个一元多项式各项的次数和系数&#xff0c;请按照如下规定的格式要求输出该多项式&…

前端学习(2467):在前端页面中引入百度地图

走在前端的大道上 插槽&#xff0c;也就是slot&#xff0c;是组件的一块HTML模板&#xff0c;这块模板显示不显示、以及怎样显示由父组件来决定。 实际上&#xff0c;一个slot最核心的两个问题在这里就点出来了&#xff0c;是显示不显示和怎样显示。 由于插槽是一块模板&…

pm961 mysql_Oracle GoldenGate学习之--异构平台同步(Mysql到Oracle)

Oracle GoldenGate学习之--异构平台同步(Mysql到Oracle)如图所示&#xff1a;源端采用Mysql库&#xff0c;目标端采用Oracle库一、OGG安装配置(源端)1、OGG下载https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number14841438https://edelivery.oracle.com/EP…

转:在csv中维护变量参数

问题&#xff1a; 1、我的变量表多&#xff0c;通过之前的csv获取的方式&#xff0c;或者用户变量来维护&#xff0c;比较麻烦 2、我想在脚本之外维护我的变量数据&#xff0c;脱离脚本 解决方案&#xff1a; 1、csv的配置如图&#xff0c;队列是变量名称&#xff0c;第二列是变…

前端学习(2471):vue-echarts和echarts的区别:

vue-echarts和echarts的区别&#xff1a; vue-echarts是封装后的vue插件&#xff0c; 基于 ECharts v4.0.1 开发&#xff0c;依赖 Vue.js v2.2.6&#xff0c;功能一样的只是把它封装成vue插件 这样更方便以vue的方式去使用它。echarts就是普通的js库&#xff0c; vue-echarts特…