什么是热部署:
简单来说,就是你修改了代码后,不需要重新启动项目就可以在浏览器上直接显示你修改后的效果。
·第一种方法(在spring-boot:run时才有效)
我在实验的时候,在修改返回值,添加新方法,添加新类同时添加新方法, 都可以实时返回新值。
但是在添加一个新的controller的时候是不成功的
<plugin><!-- 热部署插件 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin </artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.4.RELEASE</version>
</dependency>
</dependencies>
<executions> <!--后面这些不要也行,我也不知道干什么的-->
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
·第二种方法
在pom.xml中添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
</dependency>
在pom.xml中添加
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- "如果没有该项配置,devtools不会起作用,即应用不会restart",有人这么说,有人说不弄也行,我没有试过,加上不就得了,没必要瞎折腾 -->
<fork>true</fork>
</configuration>
</plugin>
异常处理:
如果不能使用的话,以下就是几种常见的解决方法:
1、看对应的spring-boot-starter-parent版本是否正确。我在运行的时候就抛出App.main异常,更换依赖管理的版本后就好了。换一个更高版本的。
2、是否加入spring-boot-maven-plugin以及属性true
3、Eclipse Project 是否开启了Build Automatically(开启自动编译的功能)。
4、如果设置SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用。(这个我没试过,百度上是这么说的)
最后,这两种方式springloader、devtools只需要配置一种即可,建议使用devtools,可以支持更多的代码热部署