SpringBoot+gradle+idea實現熱部署和熱加載

前言

由於以前使用myeclipes的同窗就知道,在使用myeclipes的時候,java文件或者jsp文件寫完以後會被直接熱加載到部署的容器中,從而在開發的時候,不一樣常常去重啓項目,從而達到了增長開發效率的目的。html

可是如今切換到SpringBoot以後,由於沒有外部容器的支持,並且使用gradle去構建項目,再加上idea默認不會自動編譯的特性,最終致使開發項目的時候須要常常重啓項目,這是咱們不肯意看到的。java

爲了提升開發效率,咱們下面將優化咱們的SpringBoot模版。方案通過驗證,可放心使用。git

github地址:https://github.com/LinkinStars/springBootTemplategithub

 

方案說明

一、SpringBoot對於頁面來講,已經實現了熱加載,只是默認是關閉的,須要手動打開。spring

二、對於JAVA類來講,使用官方推薦的spring-boot-devtools來實現熱部署(這裏是熱部署並不是熱加載注意區別)windows

三、須要關閉頁面的緩存,這裏我使用的是Thymeleaf配置在後面說明。緩存

詳細的方案說明能夠參考spring官方文檔:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.htmlapp

spring考慮是真的周到,我一開始都沒發現文檔中還有熱部署相關的說明。jsp

 

如何配置實現

一、在build.gradle文件根節點中加入ide

bootRun {
//開啓頁面熱加載功能
addResources = true
}

 

二、在build.gradle文件dependencies下加入compile("org.springframework.boot:spring-boot-devtools")

 

三、開啓IDEA自動編譯

image

上面的打勾以後,按下面的鍵

windows:ctrl + alt + shift + / 
mac: command + alt + shift + /
 

點擊Registry,勾選compiler.automake.allow.when.app.running

image

 

image

 

四、配置thymeleaf.cache爲false

thymeleaf:

cache : false

 

性能等狀況說明

一、通過以上的配置以後,頁面的修改不須要進行編譯,修改立刻就會有效果

二、Java類在修改以後會被從新編譯,可是要注意的是,項目會從新進行部署,你能夠從控制檯看到信息。

三、可是通過測試,並非整個項目從新進行部署,spring應該已經作過處理,因此從新部署的時間很是快,不會影響使用。

四、還有一種實現方案是使用:springloaded 聽說是實現的熱加載而非熱部署,可是我通過實踐以後發如今個人環境下並不能成功,沒有效果,spring官方文檔中還特別對SpringBoot+gradle+idea這樣的環境使用springloaded作出了說明,可是我根據文檔配置以後任然是不行,可能跟我本地環境有關,不過以上的配置能夠知足個人需求,並且部署時間並不長,因此我選擇使用了devtools

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html

五、使人開心還有,由於實現的是熱部署,因此即便是XML文件的修改,好比MyBatis的SQL修改都會被熱部署,也就是改什麼就立刻有用了。

六、由於當前仍是一個最簡單的項目之下,沒有不少包不少類,我不清楚當項目大了以後部署時間會不會變的特別長,還需進行測試。個人建議是,若是你有不少東西要一次性改,你就老老實實停了項目改就行了。反正不差這點時間。

相關文章
相關標籤/搜索