spring-boot-devtools是一個(gè)為開發(fā)者服務(wù)的一個(gè)模塊,其中最重要的功能就是自動(dòng)應(yīng)用代碼更改到最新的app上面去。
原理是在發(fā)現(xiàn)代碼有更改之后,重新啟動(dòng)應(yīng)用,但是速度比手動(dòng)停止后再啟動(dòng)更快。其深層原理是使用了兩個(gè)classloader,一個(gè)classloader加載那些不會(huì)改變的類(第三方j(luò)ar包),另一個(gè)classloader加載會(huì)更改的類,稱為restart classloader
,這樣在有代碼更改的時(shí)候,原來(lái)的restart classloader被丟棄,重新創(chuàng)建一個(gè)restart classloader,由于需要加載的類相比較少,所以實(shí)現(xiàn)了較快的重啟時(shí)間。即devtools會(huì)監(jiān)聽classpath下的文件變動(dòng),并且會(huì)立即重啟應(yīng)用(發(fā)生在保存時(shí)機(jī))
一、開啟idea自動(dòng)make功能
1、ctrl + shift + a --> 查找make project automatically --> 選中
2、ctrl + shift + a --> 查找registry --> 找到并勾選compiler.automake.allow.when.app.running
最后重啟idea
二、使用spring-boot-1.3開始有的熱部署功能
1、加maven依賴
1
2
3
4
5
|
<dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-devtools</artifactid> <optional> true </optional> </dependency> |
2、開啟熱部署
1
2
3
4
5
6
7
8
9
10
11
|
<build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> <configuration> <fork> true </fork> //該配置必須 </configuration> </plugin> </plugins> </build> |
三、chrome禁用緩存
f12(或ctrl+shift+j或ctrl+shift+i)--> network --> disable cache(while devtools is open)
至此,在idea中就可以愉快的修改代碼了,修改后可以及時(shí)看到效果,無(wú)須手動(dòng)重啟和清除瀏覽器緩存。
測(cè)試方法:
1.修改類-->保存:應(yīng)用會(huì)重啟
2.修改配置文件-->保存:應(yīng)用會(huì)重啟
3.修改頁(yè)面-->保存:應(yīng)用會(huì)重啟,頁(yè)面會(huì)刷新(原理是將spring.thymeleaf.cache設(shè)為false)
不能使用分析:
1.對(duì)應(yīng)的spring-boot版本是否正確,我這里使用的是1.5.3.release版本;
2.是否加入plugin了,以及屬性<fork>true</fork>
3.intellij idea是否開啟了make project automatically。
4.如果設(shè)置springapplication.setregistershutdownhook(false),則自動(dòng)重啟將不起作用。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://www.cnblogs.com/winner-0715/p/6666579.html