項(xiàng)目上線的“最后一公里”——部署與監(jiān)控
恭喜你!掌握了前面章節(jié)講解的知識(shí),你已經(jīng)具備了獨(dú)立開(kāi)發(fā)一個(gè)中小型系統(tǒng)的能力。但是先不要著急,我們還差最后一步,才能讓開(kāi)發(fā)的應(yīng)用投入使用,那就是部署。
在Spring Boot出現(xiàn)之前,部署通常會(huì)先將打好的War包放到Tomcat(或其他Web容器)的Webapps目錄下,然后啟動(dòng)Tomcat。你可能還記得在本書第3章中,我們選擇的打包方式是Jar而不是War。那么,Jar格式的工程如何啟動(dòng)呢?接下來(lái)我們就來(lái)揭開(kāi)謎底,并對(duì)比War和Jar的異同點(diǎn)。
部署
Spring Boot推薦我們使用Jar的方式打包和運(yùn)行工程(也是默認(rèn)方式)。
通過(guò)這段時(shí)間對(duì)Spring Boot的了解,我們已經(jīng)發(fā)現(xiàn)了一個(gè)規(guī)律——采用Spring Boot推薦的方式(約定優(yōu)于配置)通常都非常簡(jiǎn)單(基本上不需要做額外的工作)。當(dāng)然,Spring Boot也會(huì)給我們自定義的自由,只需要做一些額外的配置即可。
Jar
在采用Jar的方式打包應(yīng)用時(shí),我們不需要做任何額外的工作,只需要按部就班地使用Maven打包即可。執(zhí)行完打包命令,target目錄下就會(huì)生成一個(gè)Jar文件,如hello-0.0.1-SNAPSHOT.jar,然后使用java-jar命令啟動(dòng)即可。打開(kāi)系統(tǒng)命令行工具,將路徑切換到Jar文件所在的目錄:

接下來(lái)就可以看到熟悉的啟動(dòng)日志了,并且待應(yīng)用啟動(dòng)完成后,就可以訪問(wèn)我們寫的接口了,很簡(jiǎn)單。
War
Spring Boot之所以令人喜愛(ài),是因?yàn)樗藶槲覀冏隽撕芏嘧詣?dòng)配置,還能夠讓我們非常方便地使用自定義配置。
下面我們就通過(guò)自定義配置,將Spring Boot工程以傳統(tǒng)的War方式進(jìn)行打包。只需要修改項(xiàng)目主類(SpringbootApplication)和pom文件即可。
修改項(xiàng)目主類

接下來(lái)使用Maven打包,并在打包完成后將War文件復(fù)制到Tomcat的Webapps目錄下,最后運(yùn)行startup腳本(Tomcat的啟動(dòng)腳本在bin目錄下)。
DevTools
DevTools是Spring Boot 1.3引入的一組開(kāi)發(fā)者工具,目的是提高開(kāi)發(fā)效率。其中一個(gè)很重要的功能是,在代碼被修改后會(huì)自動(dòng)重啟應(yīng)用。就這樣?比自己手動(dòng)重啟也強(qiáng)不了多少呀!如果只是將原來(lái)的手動(dòng)重啟變成了自動(dòng)重啟,那真的沒(méi)什么。
自動(dòng)重啟優(yōu)勢(shì)所在
為了提升重啟的速度,Spring Boot將資源分成了兩類:一類是不變對(duì)象(如項(xiàng)目依賴的Jar包);另一類是可變對(duì)象(如應(yīng)用中的類或資源文件)。
基礎(chǔ)類加載器用來(lái)加載不變對(duì)象;重啟類加載器用來(lái)加載可變對(duì)象。
那么,在重啟時(shí)就可以只加載可變對(duì)象了。這樣一來(lái),啟動(dòng)速度勢(shì)必會(huì)比加載所有資源的方式更快。理論上講,項(xiàng)目依賴的第三方資源越多(項(xiàng)目越大),這種機(jī)制的優(yōu)勢(shì)就越明顯。
添加依賴
引入DevTools依賴:

設(shè)置IDE
要想使用Spring Boot的自動(dòng)重啟功能,需要對(duì)IDE進(jìn)行一些設(shè)置。以Intellij IDEA為例,我們需要開(kāi)啟自動(dòng)構(gòu)建和自動(dòng)編譯。
開(kāi)啟自動(dòng)構(gòu)建
選 擇 file→Settings 菜 單 命 令 ( 在 Mac 系 統(tǒng) 中 : 選 擇 IntellijIDEA→Preferences菜單命令),打開(kāi)Settings對(duì)話框,選擇Compiler選項(xiàng),并勾選Build project automatically復(fù)選框,開(kāi)啟自動(dòng)構(gòu)建,如圖14-1所示。
408打開(kāi)Settings對(duì)話框的快捷鍵如下。
· Windows系統(tǒng):Ctrl+Alt+S
· Mac系統(tǒng):Command+,
Build project automatically 復(fù) 選 框 后 面 有 一 行 小 字 : only workswhile not running/debugging。勾選該復(fù)選框后,系統(tǒng)告訴我只能在非運(yùn)行(調(diào)試)狀態(tài)下起作用。Intellij IDEA,你是在逗我嗎?我要的是在運(yùn)行時(shí)起作用呀!所以,我們還需要做一個(gè)設(shè)置。

開(kāi)啟自動(dòng)編譯
409選擇Help→Find Action→Registry菜單命令,查找設(shè)置項(xiàng),如圖14-2所示。
快捷鍵如下。
· Windows系統(tǒng):Ctrl+Alt+Shift+/
· Mac系統(tǒng):Command+Option+Shift+/

勾選compiler.automake.allow.when.app.running復(fù)選框,如圖14-3所示。

可以看到,這個(gè)選項(xiàng)允許應(yīng)用在運(yùn)行時(shí)進(jìn)行自動(dòng)編譯。
經(jīng)過(guò)以上步驟,在修改完類或application.yml文件后,應(yīng)用就可以自動(dòng)重啟了。
自定義規(guī)則
如果你想要定制自動(dòng)重啟功能,可以通過(guò)以下配置項(xiàng)來(lái)實(shí)現(xiàn):

本文就是愿天堂沒(méi)有BUG給大家分享的內(nèi)容,大家有收獲的話可以分享下,想學(xué)習(xí)更多的話可以到微信公眾號(hào)里找我,我等你哦。
