SpringBoot的热部署分为两种:
- SpringLoader插件
- DevTools工具
1.SpringLoader的使用
maven插件:
在pom.xml文件中添加插件配置:
<plugin>
<!-- springBoot编译插件-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<!-- spring热部署 -->
<!-- 该依赖在此处下载不下来,可以放置在build标签外部下载完成后再粘贴进plugin中 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
特别注意的是插件里面出现dependency依赖的问题,直接在插件里面写上dependency依赖的话,maven项目是import不了这个依赖的,解决方法就是先将dependency依赖放在<dependencies></dependencies>里面,reimport之后,再将denpendency依赖粘贴进插件中
还有一点需要注意,springLoader以插件方式添加到项目里面的话,项目启动是不能通过你的App启动类启动的,这样启动的话热部署会无效,为了让热部署成功运作应该用maven的命令启动项目,启动命令:spring-boot:run
最后一点需要注意的事项:springLoader的运作是以后台进程的形式来运行,如果没有手动关闭后台进程,重新打开项目运行后,会出现端口被占用的错误,此时需要手动关闭后台进程,任务管理器中找到 java.exe 这个进程,手动关闭
SpringLoader的缺点:只针对java代码的热部署,对于前端页面的代码无法进行热部署
2.spring-boot-devtools:
maven中添加spring-boot-devtools依赖
pom.xml中的的依赖<dependencies></dependencies>中加上:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
pom.xml中的插件配置也要加上
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
一般来说这样配置完,然后reimport一下,是可以用devtools进行热部署的,但是我配置热部署的时候并没有成功,除了配置之外,还要设置IDEA的自动编译这个功能,具体做法:
红圈的位置打钩
然后键盘上按:shift+ctrl+alt+/,选择 Registry
找到下图红色框框的选项,打钩
到最后重启项目,就能通过使用devtools实现热部署了