亚洲熟妇av一区二区三区,久久久久久精品观看sss,免费观看四虎精品国产永久,国产成人精品一区二三区熟女,天堂网在线最新版www资源网

Spring Boot引入的四種新開發(fā)者工具,你會(huì)用了嗎?

Spring Boot 1.3引入了一組新的開發(fā)者工具,可以讓你在開發(fā)時(shí)更方便地使用Spring Boot,包括如下功能。

  • 自動(dòng)重啟:當(dāng)Classpath里的文件發(fā)生變化時(shí),自動(dòng)重啟運(yùn)行中的應(yīng)用程序。
  • LiveReload支持:對(duì)資源的修改自動(dòng)觸發(fā)瀏覽器刷新。
  • 遠(yuǎn)程開發(fā):遠(yuǎn)程部署時(shí)支持自動(dòng)重啟和LiveReload。
  • 默認(rèn)的開發(fā)時(shí)屬性值:為一些屬性提供有意義的默認(rèn)開發(fā)時(shí)屬性值。

Spring Boot的開發(fā)者工具采取了庫的形式,可以作為依賴加入項(xiàng)目。如果你使用Gradle來構(gòu)建項(xiàng)目,可以像下面這樣在build.gradle文件里添加開發(fā)工具:

compile "org.springframework.boot:spring-boot-devtools"

在Maven POM里添加<dependency>是這樣的:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>

當(dāng)應(yīng)用程序以完整打包好的JAR或WAR文件形式運(yùn)行時(shí),開發(fā)者工具會(huì)被禁用,所以沒有必要在構(gòu)建生產(chǎn)部署包前移除這個(gè)依賴。

一、自動(dòng)重啟

在激活了開發(fā)者工具后,Classpath里對(duì)文件做任何修改都會(huì)觸發(fā)應(yīng)用程序重啟。為了讓重啟速度夠快,不會(huì)修改的類(比如第三方JAR文件里的類)都加載到了基礎(chǔ)類加載器里,而應(yīng)用程序的代碼則會(huì)加載到一個(gè)單獨(dú)的重啟類加載器里。檢測(cè)到變更時(shí),只有重啟類加載器重啟。

有些Classpath里的資源變更后不需要重啟應(yīng)用程序。像Thymeleaf這樣的視圖模板可以直接編輯,不用重啟應(yīng)用程序。在/static或/public里的靜態(tài)資源也不用重啟應(yīng)用程序,所以Spring Boot 開發(fā)者工具會(huì)在重啟時(shí)排除掉如下目錄:/META-INF/resources/resources、/static/public/templates。

可以設(shè)置spring.devtools.restart.exclude屬性來覆蓋默認(rèn)的重啟排除目錄。例如,你只排除/static/templates目錄,可以像這樣設(shè)置spring.devtools.restart. exclude

spring: devtools: restart: exclude: /static/**,/templates/**

另一方面,如果想徹底關(guān)閉自動(dòng)重啟,可以將spring.devtools.restart.enabled設(shè)置為false:

spring: devtools: restart: enabled: false

另外,還可以設(shè)置一個(gè)觸發(fā)文件,必須修改這個(gè)文件才能觸發(fā)重啟。例如,在修改為.trigger 的文件前你都不希望執(zhí)行重啟,那么你只需像這樣設(shè)置spring.devtools.restart.trigger-file屬性:

spring: devtools: restart: trigger-file: .trigger

如果你的IDE會(huì)連續(xù)編譯修改的文件,那觸發(fā)文件還是很有用的。沒有觸發(fā)文件的話,每次變更都會(huì)觸發(fā)重啟。有觸發(fā)文件,就能保證只有你想重啟時(shí)才會(huì)發(fā)生重啟(修改觸發(fā)文件即可)。

二、LiveReload

在Web應(yīng)用程序開發(fā)過程中,最常見的步驟大致如下:

  • 修改要呈現(xiàn)的內(nèi)容(比如圖片、樣式表、模板)。
  • 點(diǎn)擊瀏覽器里的刷新按鈕,查看修改的結(jié)果。
  • 回到第1步。

雖然這并不難,但如果能不點(diǎn)刷新就直接看到修改結(jié)果,那豈不是更好?

Spring Boot的開發(fā)者工具集成了LiveReload(http://livereload.com),可以消除刷新的步驟。激活開發(fā)者工具后,Spring Boot會(huì)啟動(dòng)一個(gè)內(nèi)嵌的LiveReload服務(wù)器,在資源文件變化時(shí)會(huì)觸發(fā)瀏覽器刷新。你要做的就是在瀏覽器里安裝LiveReload插件。

如果想要禁用內(nèi)嵌的 LiveReload 服務(wù)器,可以將 spring.devtools.livereload. enabled設(shè)置為false:

spring: devtools: livereload: enabled: false

三、遠(yuǎn)程開發(fā)

在遠(yuǎn)程運(yùn)行應(yīng)用程序時(shí)(比如部署到服務(wù)器上或云上),開發(fā)者工具的自動(dòng)重啟和LiveReload特性都是可選的。此外,Spring Boot開發(fā)者工具還能遠(yuǎn)程調(diào)試Spring Boot應(yīng)用程序。

在傳統(tǒng)的開發(fā)過程中,你不會(huì)打開遠(yuǎn)程開發(fā)功能,因?yàn)檫@會(huì)影響性能。但在一些特殊的場(chǎng)景中,此類工具就很有用。比如,出于開發(fā)目的,所開發(fā)的應(yīng)用程序部署在非生產(chǎn)環(huán)境里。如果應(yīng)用程序不是在本地開發(fā)環(huán)境里,而是在云端部署,則尤其如此。

你必須設(shè)置一個(gè)遠(yuǎn)程安全碼來開啟遠(yuǎn)程開發(fā)功能:

spring: devtools: remote: secret: myappsecret

有了這個(gè)屬性后,運(yùn)行中的應(yīng)用程序就會(huì)啟動(dòng)一個(gè)服務(wù)器組件以支持遠(yuǎn)程開發(fā)。它會(huì)監(jiān)聽接受變更的請(qǐng)求,可以重啟應(yīng)用程序或者觸發(fā)瀏覽器刷新。

為了使用這個(gè)遠(yuǎn)程服務(wù)器,你需要在本地運(yùn)行遠(yuǎn)程開發(fā)工具的客戶端。這個(gè)遠(yuǎn)程客戶端是一個(gè)類,全限定類名是org.springframework.boot.devtools.RemoteSpringApplication。它會(huì)運(yùn)行在IDE里,要求提供一個(gè)參數(shù),告知遠(yuǎn)程應(yīng)用程序部署在哪里。

例如,假設(shè)你正遠(yuǎn)程運(yùn)行閱讀列表應(yīng)用程序,部署在 Cloud Foundry 上,地址是 https://readinglist.cfapps.io。如果你正在使用Eclipse或Spring ToolSuite,可以通過如下步驟開啟遠(yuǎn)程客戶端。

  1. 選擇Run > Run Configurations菜單項(xiàng)。
  2. 創(chuàng)建一個(gè)新的Java Application運(yùn)行配置。
  3. 在Project里選中Reading List項(xiàng)目(可以鍵入項(xiàng)目名或者點(diǎn)擊Browse按鈕找到這個(gè)項(xiàng)目,見圖A-1)。
  4. 在Main Class里鍵入org.springframework.boot.devtools.RemoteSpringAppli-cation(見圖A-1)。
  5. 切換到Arguments標(biāo)簽頁,在Program Arguments里鍵入https://readinglist.cfapps. io(見圖A-2)。

Spring Boot引入的四種新開發(fā)者工具,你會(huì)用了嗎?

圖A-1 RemoteSpringApplication是遠(yuǎn)程開發(fā)者工具客戶端

Spring Boot引入的四種新開發(fā)者工具,你會(huì)用了嗎?

圖A-2 RemoteSpringApplication將遠(yuǎn)程應(yīng)用程序的URL作為參數(shù)

客戶端啟動(dòng)后,就可以在IDE里修改應(yīng)用程序了。在檢測(cè)到變動(dòng)后,這些修改點(diǎn)會(huì)被推送到遠(yuǎn)端并加以應(yīng)用。如果修改的內(nèi)容涉及呈現(xiàn)的Web資源(比如樣式表或JavaScript),LiveReload 還會(huì)觸發(fā)瀏覽器刷新。

遠(yuǎn)程客戶端還會(huì)開啟基于HTTP的遠(yuǎn)程調(diào)試通道,這樣就能在IDE里調(diào)試部署在遠(yuǎn)程的應(yīng)用程序了。你要做的就是確保遠(yuǎn)程應(yīng)用程序打開了遠(yuǎn)程調(diào)試功能。這通??梢酝ㄟ^配置JAVA_OPTS來實(shí)現(xiàn)。

比方說,你的應(yīng)用程序部署在Cloud Foundry上,可以像下面這樣在應(yīng)用程序的manifest.yml里設(shè)置JAVA_OPTS。

--- env: JAVA_OPTS: "-Xdebug -Xrunjdwp:server=y,transport=dt_socket,suspend=n"

遠(yuǎn)程應(yīng)用程序啟動(dòng)后,會(huì)和本地調(diào)試服務(wù)器建立一個(gè)連接。你可以設(shè)置斷點(diǎn),一步步執(zhí)行遠(yuǎn)程應(yīng)用程序里的代碼,就好像它們運(yùn)行在本地一樣(出于網(wǎng)絡(luò)原因,速度會(huì)有點(diǎn)慢)。

四、默認(rèn)的開發(fā)時(shí)屬性

有些配置屬性通常在開發(fā)時(shí)設(shè)置,從來不用在生產(chǎn)環(huán)境里。比如視圖模板緩存,在開發(fā)時(shí)最好關(guān)掉,這樣你可以立刻看到修改的結(jié)果。但在生產(chǎn)環(huán)境里,為了追求更好的性能,應(yīng)該開啟視圖模版緩存。

默認(rèn)情況下,Spring Boot會(huì)為其支持的各種視圖模板(Thymeleaf、Freemarker、Velocity、MustacheGroovy模板)開啟緩存選項(xiàng)。但如果存在Spring Boot的開發(fā)者工具,這些緩存就會(huì)禁用。

實(shí)際上,這就是說在開發(fā)者工具激活后,如下屬性會(huì)設(shè)置為false:

  • spring.thymeleaf.cache
  • spring.freemarker.cache
  • spring.velocity.cache
  • spring.mustache.cache
  • spring.groovy.template.cache

這樣一來,就不用在開發(fā)時(shí)(在一個(gè)開發(fā)時(shí)使用的Profile配置里)禁用它們了。

五、全局配置開發(fā)者工具

你應(yīng)該已經(jīng)注意到了,在使用開發(fā)者工具時(shí),你通常會(huì)在多個(gè)項(xiàng)目里使用相同的設(shè)置。舉個(gè)例子,如果你使用了重啟觸發(fā)文件,那么你很可能在多個(gè)項(xiàng)目里都使用相同的觸發(fā)文件名。相比在每個(gè)項(xiàng)目里重復(fù)開發(fā)者工具配置,對(duì)開發(fā)者工具做全局配置顯得更方便一些。

要實(shí)現(xiàn)這個(gè)目的,可以在你的主目錄(home directory)里創(chuàng)建一個(gè)名為.spring-boot-devtools. properties的文件。(請(qǐng)注意,文件名用“.”開頭。)在那個(gè)文件里,你可以設(shè)置希望在多個(gè)項(xiàng)目里共享的各種開發(fā)者工具屬性。

例如,假設(shè)你想把觸發(fā)文件的名稱設(shè)置為.trigger,在所有Spring Boot項(xiàng)目里禁用LiveReload。你可以創(chuàng)建一個(gè).spring-boot-devtools.properties文件,包含如下內(nèi)容:

spring.devtools.restart.trigger-file=.trigger spring.devtools.livereload.enabled=false

要是你想覆蓋這些配置,可以在每個(gè)項(xiàng)目的application.propertiesapplication.yml文件里設(shè)置特定于每個(gè)項(xiàng)目的屬性。

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。