1、添加 devtools 依赖java
<!-- 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>
当配置了 devtools 后,咱们在classpath修改任何文件项目都将会自动重启。spring
(1)某些资源在更改时不必定须要触发从新启动。例如, Thymeleaf 模板能够就地进行编辑。默认状况下更改资源路径包括了:/META-INF/maven
, /META-INF/resources
,/resources
,/static
,/public
或者 /templates
不会触发从新启动, 但会触发实时从新加载。app
若是逆向排除这些路径,能够使用以下配置:maven
spring.devtools.restart.exclude=static/**,public/**spring-boot
(2)若是要保留这些默认值并添加其余排除项, 请使用 spring.devtools.restart.additional-exclude 属性代替。spa
(3)经过 System.setProperty("spring.devtools.restart.enabled", "false"); 方法,能够在SpringApplication.run()方法运行天使用关闭 devtools。rest
(4)当咱们再次启动 App.java 的时候,使用的加载器就变为了 restartedMain 了,说明热部署已经成功。code
注意点:devtools 因为是双类加载机制,再结合了通用Mapper后可能会出现 java.lang.ClassCastException 异常(例如:说class x.x.A cannot be cast to x.x.A
。)。blog
解决方案就以下:资源
在 src/main/resources
中建立 META-INF 目录,在此目录下添加 spring-devtools.properties 配置,内容以下:
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar