1、maven依赖
<!-- Spring boot 热部署 : 此热部署会遇到 java.lang.ClassCastException 异常 -->
<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2、当配置了 devtools 后,我们在classpath修改任何文件项目都将会自动重启。
(1)某些资源在更改时不一定需要触发重新启动。例如, Thymeleaf 模板可以就地进行编辑。默认情况下更改资源路径包括了:/META-INF/maven
, /META-INF/resources
,/resources
,/static
,/public
或者 /templates
不会触发重新启动, 但会触发实时重新加载。
如果逆向排除这些路径,可以使用如下配置:
spring.devtools.restart.exclude=static/**,public/**
(2)如果要保留这些默认值并添加其他排除项, 请使用 spring.devtools.restart.additional-exclude 属性代替。
(3)通过 System.setProperty("spring.devtools.restart.enabled", "false"); 方法,可以在SpringApplication.run()方法运行时使用关闭 devtools。
(4)当我们再次启动 App.java 的时候,使用的加载器就变为了 restartedMain 了,说明热部署已经成功。
ps:其他方式:
<configuration>
<fork>true</fork>
</configuration>
实例如下
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>