Idea 创建简单的SpringBoot 父子项目

背景

使用Idea 创建一个模块化的SpringBoot项目,但是发现Idea 创建父子项目的方式较Eclipse 较为不同,且Idea 创建的过程较Eclipse创建父子项目的过程复杂。
Eclipse 创建SpringBoot父子项目传送门

网上虽然有Idea创建SpringBoot父子项目,但是携带各种其他的功能,导致无法简单的搞懂如何创建。下面就一个例子进行说明一下。

构建简单SpringBoot父子项目

环境说明:jdk1.8
Idea 版本:2019.3
(1)打开Idea,如果是新安装的软件,不会有历史项目
在这里插入图片描述
(2)点击 “Create New Project”,进入一个新的项目的创建界面。父项目直接创建一个Maven项目即可
在这里插入图片描述
PS:不要勾选 “Create from archetype”
点击下一步。
(3)进入父项目的创建页面,填写项目名称和GoupId与坐标
在这里插入图片描述
PS:可以在上图红圈标注的地方修改项目的地址
(4)点击Finish 按钮,完成一个父项目的创建。
下图是点击Finish 创建好的项目在Idea 软件中打开的情况:
在这里插入图片描述
(5)在现有父项目的基础上新建SpringBoot子项目
在父项目的名称的位置右键鼠标:
在这里插入图片描述
(6)新建一个Module,进入新建页面。
子项目直接选择Spring initializr,创建一个SpringBoot项目
在这里插入图片描述
点击下一步,进入子项目的具体构建内容。
在这里插入图片描述
填写坐标后,点击下一步。
(7)进入新建项目选择插件,由于我们测试需要,所以直接简单的选择了web
在这里插入图片描述
点击下一步,可以更改项目名称和地址
在这里插入图片描述
可以看出,子项目的地址默认在父项目文件夹下。点击Finish完成子项目的创建。
(8)可以删除一些子项目不需要的文件,不删也行
在这里插入图片描述
P: 还有父项目的src文件夹,这个已经不需要了,所以可以直接删除

(9)经过 1-8 步的操作,我们创建了父子项目结构,但是这两个项目尚未实现父子关系。下面我们需要更改POM文件,来实现父子关系。
在这里插入图片描述
这里我们先粘贴出还没有改变关系之前的父子结构项目原有的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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version>
</project>
  • 子项目
<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo-redis</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-demo-redis</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

(10)首先将你认为子项目中是公共的部分拿到父项目中,包括spring-boot-starter-parent 和一些 properties 以及build 等公共配置

<!--1 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent>
<!--2 -->
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties>
<!--3-->
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

上面子项目中的配置文件都可以拿到父项目的POM文件中 。
(11)将父项目的坐标,复制到 子项目的父坐标中

	<parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version></parent>

(12) 父项目 新增 pom
P:这个必须
在这里插入图片描述
(13)将子项目的moudle 关联到 父项目中

  <modules><module>springboot-demo-redis</module></modules>

在这里插入图片描述
(14)我们再来看下新的父子项目的 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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>springboot-demo-redis</module></modules><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
  • 子项目
<?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><parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo</artifactId><version>1.0-SNAPSHOT</version></parent><groupId>com.codingdemo</groupId><artifactId>springboot-demo-redis</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-demo-redis</name><description>Demo project for Spring Boot</description></project>

读者可以对比一下,没有改造之前的POM文件,有什么差距
(15) 我们来验证一下,父子项目是否成功创建
我们在子项目中新增一个Controller ,进行一下简单Web访问,查看是否成功
在这里插入图片描述

package com.codingdemo.springbootdemoredis.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "hello world!";}
}

启动一下SpringBoot 启动类,输入网址
在这里插入图片描述
可以看到能够成功访问,我们已经成功搭建好简单的父子SpringBoot项目
(16) 如果我修改 Controller的方法,需要重启项目,这样比较麻烦。下面是如何配置热部署SpringBoot项目

SpringBoot项目的热部署

(1)在上面现有的父子SpringBoot项目中,在父项目POM文件增加热部署的devtools依赖。

<!-- 热加载 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!--热加载必须配上以下内容--><configuration><fork>true</fork></configuration></plugin></plugins></build>

(2) 我们可以在配置文件中设置devtools

### 热部署配置
spring.devtools.restart.enabled=true 
spring.devtools.restart.additional-paths=src/main/java
spring.devtools.restart.poll-interval=1s
spring.freemarker.cache=false

(3)如果修改了Controller的函数但是还是没有热加载,可能是由于你是新的项目需要设置开启自动编译
在这里插入图片描述
P:勾上
重启项目后,然后再次修改文件后,便可以看到开始热部署了
在这里插入图片描述

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

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

相关文章

微服务架构与SpringCloud

微服务架构简述 通常而言&#xff0c;微服务架构是一种架构模式或者说是一种架构风格&#xff0c;它提倡将单一应用程序划分成一组小的服务&#xff0c;每个服务运行在其独立的自己的进程中&#xff0c;服务之间互相协调、互相配合为用户提供最终价值。服务之间采用轻量级的通…

REST和RPC是什么东东?两者有什么区别

1 REST与RPC概念 什么是REST REST是一种架构风格&#xff0c;指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源&#xff0c;网络上一切皆资源。 REST并没有创造新的技术&#xff0c;组件或服务&#xff0c…

简述计算机进行远程桌面管理操作过程,服务器应用之“远程桌面连接”(操作篇)...

在上篇《服务器应用之“远程桌面连接”(部署篇) 》《服务器应用之“远程桌面连接”(建立篇) 》&#xff0c;我们介绍了远程桌面的部署和建立方法。在远程桌面连接成功后就可以进行一些远程桌面连接可以进行的计算机管理了。具体可以进行的远程桌面连接操作如下&#xff1a;1. 使…

未为dll加载任何符号_专家发现aspersky 和Trend Micro安全性解决方案中的DLL劫持问题...

SafeBreach的研究人员发现了Kaspersky安全连接、Trend Micro最大安全性和Autodesk桌面应用程序中的几个DLL劫持漏洞&#xff0c;黑客可以利用这些漏洞进行DLL预加载、代码执行和权限升级。第一个问题在卡巴斯基安全连接(KSDE) VPN客户端&#xff0c;跟踪为CVE-2019-15689&#…

什么是Eureka? 单机版Eureka如何使用?

Eureka 是什么&#xff1f; Eureka 是Spring Cloud的服务治理组件&#xff0c;有三个核心角色&#xff1a; 服务注册中心、服务提供者、服务消费者。Eureka 主管服务注册中心。 是Netflix的一个子模块&#xff0c;也是核心模块之一。Eureka是一个基于REST的服务&#xff0c;用…

ntko跨浏览器插件_继泄露版后,微软全新 Chrome 内核 Edge 浏览器你都测试过了吗?...

尽管微软的 Office 和 Windows 10 势头不错&#xff0c;但像 WP 手机、XBox 等方面似乎并未获得预期的成功。而先前为了替代老旧的 IE 浏览器&#xff0c;微软倾力开发的 Edge 也未见起色。不过微软也一直在努力变得更加开放&#xff0c;比如发布 VS for Mac、Office for Mac、…

如何将单机版的Eureka服务改为集群版Eureka服务

Eureka 集群原理 基本原理 上图是来自eureka的官方架构图&#xff0c;这是基于集群配置的eureka&#xff1b; 处于不同节点的eureka通过Replicate进行数据同步Application Service为服务提供者Application Client为服务消费者Make Remote Call完成一次服务调用 服务启动后向…

台式计算机读不到u盘怎么回事,电脑读不出u盘怎么办

把U盘插入电脑USB接口中&#xff0c;却发现找不到U盘图标&#xff0c;甚至连安装U盘驱动的提示也没有&#xff0c;那么电脑读不出u盘怎么办呢?天学习啦小编就和大家说说电脑读不出u盘的解决方法。电脑读不出u盘解决方法1、首先应该排除是否是由于电脑系统问题&#xff0c;具体…

Eureka 与Zookeeper 的区别,Eureka相较于Zookeeper好在哪?

传统的ACID A&#xff08;Atomicity&#xff09; 原子性C&#xff08;Consistency&#xff09; 一致性I &#xff08;Isolation&#xff09;独立性D&#xff08;Durability&#xff09;持久性 关系型数据库&#xff08;MySQL&#xff0c;Oracle&#xff0c;SqlServer&#xf…

如何将Springboot项目成功部署到linux服务器上?

springboot的jar包方式 idea默认就是jar打包方式所以直接使用maven工具按照步骤点击就可以直接打包ps:打包前你的数据库相关的连接信息要记得修改&#xff0c;不能再用本地的了 第二步&#xff1a;Maven clean &#xff1a;清除编译后的目录&#xff0c;默认是target目录 [IN…

2018年3月计算机二级考试题,2018年3月计算机二级考试Access综合试题十

2018年3月计算机等级考试即将开始&#xff0c;小编在这里为考生们整理了2018年3月计算机二级考试Access综合试题&#xff0c;希望能帮到大家&#xff0c;想了解更多资讯&#xff0c;请关注出国留学网的及时更新哦。2018年3月计算机二级考试Access综合试题十(1)要将“选课成绩”…

sqldataadapter.fill 索引超出了数组界限_小学生学习C++||第十五节 数组

存储数据的方式第一种&#xff0c;变量&#xff1a;存放1个学生的数学成绩可以定义1个变量存放&#xff0c;那么如果想要存放100个学生的数学成绩应该如何存储呢&#xff1f;第二种&#xff0c;数组&#xff1a;引入数组概念&#xff1a;可以用来表达类型相同的元素的集合&…

数据字典在sga的哪一个组件中缓存_【赵强老师】Oracle数据库的内存结构

首先&#xff0c;我们通过一张图片来了解一下Oracle数据库的内存结构&#xff0c;如下&#xff1a;每个数据库实例有两个关联的内存结构—系统全局区(SGA),程序全局区(PGA)。系统全局(SGA)&#xff1a;一组共享的内存结构(称为SGA 组件)&#xff0c;其中包含一个OracleDB 实例的…

计算机黑屏策略,小黑w7系统诊断策略服务已被禁用的还原教程

小黑w7家庭版开机速度快&#xff0c;是入门级小黑w7系统。据调查不少用户在使用中都碰到了诊断策略服务已被禁用的问题。面对小黑w7系统诊断策略服务已被禁用这样的小问题&#xff0c;我们该如何解决呢&#xff1f;不经常使用电脑的朋友对于小黑w7系统诊断策略服务已被禁用的问…

overline css,CSS text-decoration-line 属性

定义和用法text-decoration-line 属性规定文本修饰要使用的线条类型。注意&#xff1a;您也可以使用 text-decoration 属性设置 text-decoration-line。text-decoration 属性是 text-decoration-line、text-decoration-style 和 text-decoration-color 属性的速记属性。注意&am…

npoi word在试图打开文件时遇到错误_【技巧】word在试图打开文件时遇到错误

问题使用Word的时候遇到了一个问题&#xff0c;如下图所示解决方案情况一&#xff1a;修改文件后缀导致打开错误如果源文件不是“.doc”或者“.docx”格式结尾&#xff0c;通过修改文件后缀的方式修改为“.doc”或者“.docx”格式。在打开文件的时候出现上述警告时&#xff0c;…

空间服务器有问题是系统问题吗,服务器空间租用两个主要问题要留意

只要是建设网站&#xff0c;那么服务器空间租用都是不能缺少的。而且这样的一种租赁模式都是长期的&#xff0c;所以我们需要考虑到租用的整体性价比&#xff0c;这样后续的应用才能有所保障。而且我们只要是建设了网站&#xff0c;服务器和空间一般都是不会更换掉的&#xff0…

面试让HR都能听懂的MySQL锁机制,欢声笑语中搞懂MySQL锁

腾讯云数据库负责人林晓斌说过&#xff1a;“我们面试MySQL同事时只考察两点&#xff0c;索引和锁”。言简意赅&#xff0c;MySQL锁的重要性不言而喻。 本文通过同事“侨总”的一场面试&#xff0c;带你通俗易懂的掌握MySQL各种锁机制&#xff0c;希望可以帮到你&#xff01;近…

MySQL锁机制,行锁jingran加在索引上

锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff0c;应该都不陌生。?但在这之前我们先来看看并发控制&#xff0c;理清MVCC多版本并发控制和锁的关系&#xff0c;这也是之前我很迷惑的一个点 并发控制技术 在数据库中&#xff0c;数据可以允许多个用户…

闲置服务器 虚拟服务器,闲置主机搭建服务器

闲置主机搭建服务器 内容精选换一换安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。在本地主机和Windows云服务器上分别安装数据传输工具&#xff0c;将文件上传到云服务器。例如QQ.exe。本地磁盘映射(推荐使用…