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