spring boot的devtools热部署及遇到的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Abel_Liujinquan/article/details/88761445

摘要:本文重点讲解devtools作用和使用场景、怎么部署devtools以及自定义设定devtools的重启/不重启目录

1、devtools作用和使用场景:

Spring Boot的devtools主要作用是热部署,众所周知,当我们在开发时,经常需要修改一些内容然后重启、调试,但是不断的重启项目是很耗时的,特别是项目比较大时,重启时间就比较恶心了。

有了devtools,我们就可以通过简单的方式是我们的修改生效。

2、部署devtools

1)首先在我们的pom.xml中添加依赖:
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
</dependency>
2)然后,在build–plugins中加入:
<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<!--fork :  如果没有该项配置,devtools不会起作用,即应用不会restart -->
				<fork>true</fork>
			</configuration>
</plugin>
注意:

配置完之后,启动项目时遇到的问题

Caused by: java.lang.ClassCastException

报错原因是:为了实现热部署,Devtools原有自己的类加载器,进行更新,由于类加载器的不同导致类型转换失败。
解决办法:
将要强制类型转换的对象先转换成json格式,再转换回来即可。
如果不是必须要使用devtools的话,也可以直接去掉devtools的依赖:
在这里插入图片描述

3)怎么restart?

eclipse:当你Ctrl + S 保存的时候,就会自动热部署。
IDEA:需要简单配置一下:
打开File – settings – keymap
搜索reload,双击,然后选择 Add Keyboard Shortcut
然后输入对应按键(推荐使用Alt+E):
在这里插入图片描述

3、自己设置devtools重启/不重启目录

默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

1)自己设置不重启的目录:
spring.devtools.restart.exclude=static/**,public/**

这样的话,就只有这两个目录下的文件修改不会导致restart操作了。

2)在保留默认设置的基础上,添加其他的排除目录:
spring.devtools.restart.additional-exclude=
3)当非classpath下的文件发生变化时,应用得以重启:
spring.devtools.restart.additional-paths=

猜你喜欢

转载自blog.csdn.net/Abel_Liujinquan/article/details/88761445