SpringBoot 下集成 Devtools(實現(xiàn)熱部署)

技術(shù)介紹

devtools:是boot的一個熱部署工具,當我們修改了classpath下的文件(包括類文件、屬性文件、頁面等)時儿倒,會重新啟動應(yīng)用(由于其采用的雙類加載器機制,這個啟動會非澄匦Γ快义桂,如果發(fā)現(xiàn)這個啟動比較慢找筝,可以選擇使用jrebel)

雙類加載器機制:boot使用了兩個類加載器來實現(xiàn)重啟(restart)機制:base類加載器(簡稱bc)+restart類加載器(簡稱rc)蹈垢。

  • bc:用于加載不會改變的jar(eg.第三方依賴的jar)
  • rc:用于加載我們正在開發(fā)的jar(eg.整個項目里我們自己編寫的類)慷吊。當應(yīng)用重啟后,原先的rc被丟掉曹抬、重新new一個rc來加載這些修改過的東西溉瓶,而bc卻不需要動一下。這就是devtools重啟速度快的原因谤民。

thymeleaf:boot推薦的模板引擎堰酿,這里做簡要的介紹,用來介紹devtools對頁面的熱部署张足。

項目結(jié)構(gòu):

pom.xml

說明:如果僅僅使用thymeleaf触创,只需要引入thymeleaf;如果需要使用devtools为牍,只需要引入devtools哼绑。

注意:
maven中的optional=true表示依賴不會傳遞。即此處引用的devtools不會傳遞到依賴myboot項目的項目中碉咆。

僅僅加入devtools在我們的IDEA中還不起作用抖韩,這時候還需要對之前添加的spring-boot-maven-plugin做一些修改,如下:


即添加了fork:true

對IDEA配置進行修改:

  1. CTRL + SHIFT + A --> 查找make project automatically --> 選中
  2. CTRL + SHIFT + A --> 查找Registry --> 找到并勾選compiler.automake.allow.when.app.running

倘若發(fā)現(xiàn)還未生效:

  • Chrome禁用緩存

    F12(或Ctrl+Shift+J或Ctrl+Shift+I) --> NetWork --> Disable Cache

ThymeleafController

package nuc.jyg.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @Author Nuc YongGuang Ji
 * Created by JiYongGuang on 2017/4/18.
 */
@Controller
@RequestMapping("/thymeleaf")
public class ThymeleafController {

    @RequestMapping(path = {"/interview"}, method = {RequestMethod.GET})
    public String interview(@RequestParam(name = "name", required = false, defaultValue = "interview") String name,Model model) {

        model.addAttribute("templateName",name);
        return "interview";
    }

}

說明:Model可以作為一個入?yún)⒁咄诖a中茂浮,將屬性以"key-value"的形式存入model,最后直接返回字符串即可壳咕。

interview.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>thymeleaf程序</title>
</head>
<body>
<!--/*@thymesVar id="templateName" type="nuc.jyg.controller.ThymeleafController"*/-->
<p th:text="'Hello,' + ${templateName} + '!!!'"></p>
<div>1234567890!!!!</div>
</body>
</html>

注意:
src/main/resources/templates:頁面存放目錄
src/main/resources/static:方式靜態(tài)文件(css席揽、js等)
以上的目錄與ssm中開發(fā)的不一樣,ssm中會放在src/main/webapp下

測試:

修改類 --> 保存:應(yīng)用會重啟
修改配置文件 --> 保存:應(yīng)用會重啟
修改頁面 --> 保存:應(yīng)用不會重啟谓厘,但會重新加載幌羞,頁面會刷新(原理是將spring.thymeleaf.cache設(shè)為false)

補充:
默認情況下:

/META-INF/maven,/METAINF/resources庞呕,
/resources新翎,/static,/templates住练,/public

這些文件夾下的文件修改不會使應(yīng)用重啟地啰,但是會重新加載(devtools內(nèi)嵌了一個LiveReload server,當資源發(fā)生改變時讲逛,瀏覽器刷新)亏吝。

如果想改變默認的設(shè)置,可以自己設(shè)置不重啟的目錄:

spring.devtools.restart.exclude=static/,public/

這樣的話盏混,就只有這兩個目錄下的文件修改不會導致restart操作了蔚鸥。


如果要在保留默認設(shè)置的基礎(chǔ)上還要添加其他的排除目錄惜论,使用::

spring.devtools.restart.additional-exclude


如果想要使得當非classpath下的文件發(fā)生變化時應(yīng)用得以重啟,使用:

spring.devtools.restart.additional-paths

這樣devtools就會將該目錄列入了監(jiān)聽范圍止喷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末馆类,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弹谁,更是在濱河造成了極大的恐慌乾巧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件预愤,死亡現(xiàn)場離奇詭異沟于,居然都是意外死亡,警方通過查閱死者的電腦和手機植康,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門旷太,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人销睁,你說我怎么就攤上這事供璧。” “怎么了榄攀?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵嗜傅,是天一觀的道長。 經(jīng)常有香客問我檩赢,道長吕嘀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任贞瞒,我火速辦了婚禮偶房,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘军浆。我一直安慰自己棕洋,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布乒融。 她就那樣靜靜地躺著掰盘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赞季。 梳的紋絲不亂的頭發(fā)上愧捕,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音申钩,去河邊找鬼次绘。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的邮偎。 我是一名探鬼主播管跺,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼禾进!你這毒婦竟也來了豁跑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤命迈,失蹤者是張志新(化名)和其女友劉穎贩绕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壶愤,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年馏鹤,在試婚紗的時候發(fā)現(xiàn)自己被綠了征椒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡湃累,死狀恐怖勃救,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情治力,我是刑警寧澤蒙秒,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宵统,受9級特大地震影響晕讲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜马澈,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一瓢省、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痊班,春花似錦勤婚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凝果,卻和暖如春祝迂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背豆村。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工液兽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓四啰,卻偏偏與公主長得像宁玫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柑晒,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容