国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
[Spring Boot 系列教程] Dev Tools

上一篇文章中,介紹了 Spring Boot 的項(xiàng)目結(jié)構(gòu)及自動(dòng)構(gòu)建機(jī)制,在本文中,將介紹 Spring Boot 開(kāi)發(fā)者工具。

Spring Boot 中包含一組額外的工具 spring-boot-devtools,提供了一些在開(kāi)發(fā)中非常有用的功能。

使用

在項(xiàng)目中添加 spring-boot-devtools 非常簡(jiǎn)單,只需要添加以下依賴(lài)項(xiàng)即可:

maven

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

gradle

configurations {    developmentOnly    runtimeClasspath {        extendsFrom developmentOnly    }}dependencies {    developmentOnly("org.springframework.boot:spring-boot-devtools")}

因?yàn)?spring-boot-devtools 一般只使用于開(kāi)發(fā)環(huán)境,在生產(chǎn)環(huán)境是需要禁用的,所以得設(shè)置 optional=true(maven) 或是 developmentOnly(gradle),這樣一來(lái),當(dāng)我們?cè)谏a(chǎn)環(huán)境啟動(dòng)服務(wù)時(shí)(比如通過(guò) java -jar 方式啟動(dòng)),spring-boot-devtools 會(huì)被禁用。同時(shí),Repackaged 生成的包默認(rèn)情況下也是不包含 devtools 的,如有需要,可以通過(guò)設(shè)置 excludeDevtoolsfalse 來(lái)啟用它。

Dev Tools 的特性

默認(rèn)屬性

Spring Boot 為了支持某些庫(kù)使用緩存來(lái)提高性能,提供了一些設(shè)置,如:spring.thymeleaf.cache,它將會(huì)緩存編譯模板,避免因模板的重復(fù)解析而降低系統(tǒng)性能,這在生產(chǎn)環(huán)境中是非常重要的,但是在本地開(kāi)發(fā)時(shí),這會(huì)導(dǎo)致我們每次修改模板都要重啟服務(wù),大大降低了開(kāi)發(fā)速度,為了避免這個(gè)問(wèn)題,我們需要手動(dòng)禁用 thymeleaf 緩存,但是如果你的項(xiàng)目中添加了 devtools ,那我們就不需要去一一設(shè)置這些選項(xiàng)了,devtools 為此提供了非常多的默認(rèn)設(shè)置。

devtools 提供的所有默認(rèn)選項(xiàng)請(qǐng)參考:DevToolsPropertyDefaultsPostProcessor

如果你需要禁用 devtools 提供的默認(rèn)屬性,請(qǐng)?jiān)O(shè)置 spring.devtools.add-properties=false

自動(dòng)重啟服務(wù)

當(dāng)項(xiàng)目 classpath 下的文件發(fā)生了變動(dòng),devtools 將會(huì)幫我們自動(dòng)重啟服務(wù),這也是個(gè)非常有用的功能。

觸發(fā)重啟

因?yàn)?devtools 將會(huì)監(jiān)控應(yīng)用的 classpath 下的資源,因此當(dāng) classpath 下的資源發(fā)生了變更時(shí),應(yīng)用就會(huì)被重啟。在 Eclipse 中,保存修改后的文件將會(huì)觸發(fā)重啟;在 Idea 中,構(gòu)建項(xiàng)目(Build -> Build Project)將會(huì)導(dǎo)致應(yīng)用重啟。

但是有幾點(diǎn)需要注意:

  • devtools 將會(huì)使用獨(dú)立的類(lèi)加載器。

  • devtools 依賴(lài)應(yīng)用程序關(guān)閉鉤子,如果你的應(yīng)用禁用了關(guān)閉鉤子(SpringApplication.setRegisterShutdownHook(false)),devtools 將會(huì)失效。

  • 在決定是否應(yīng)該觸發(fā)重啟時(shí),devtools 將會(huì)自動(dòng)忽略名為 spring-boot , spring-boot-devtools , spring-boot-autoconfigure , spring-boot-actuatorspring-boot-starter 的項(xiàng)目。

重啟 vs 重新加載

Spring Boot 的重啟和我們手動(dòng)的重啟有一些區(qū)別,因?yàn)?Spring Boot 將會(huì)使用兩個(gè)類(lèi)加載器來(lái)加載我們的應(yīng)用,其中一個(gè)用于加載不會(huì)變更的類(lèi)(如:第三方 jar) ,另外一個(gè)則用于加載我們開(kāi)發(fā)的程序,在應(yīng)用重新啟動(dòng)時(shí),基本類(lèi)加載器不會(huì)變,但是 Spring Boot 將會(huì)直接丟棄用于加載我們自己程序的類(lèi)加載器,并重新創(chuàng)建一個(gè)類(lèi)加載器加載變更后的應(yīng)用,因?yàn)檫@樣,這種方式啟動(dòng)應(yīng)用將比普通方式啟動(dòng)更快,因?yàn)榛A(chǔ)類(lèi)已經(jīng)被加載。

如果你覺(jué)得 Spring Boot 提供的重啟還是不夠快的話(huà),可以嘗試使用其它的基于 Reload 的技術(shù),如 JRebel

條件評(píng)估結(jié)果日志

在默認(rèn)情況下,每次重啟時(shí),Spring Boot 將會(huì)記錄條件評(píng)估的結(jié)果報(bào)告。這個(gè)報(bào)告將會(huì)展示你的應(yīng)用

auto-configuration 的變更(如增加或刪除 Bean 以及配置屬性的變更)。你也可以通過(guò)以下屬性禁用它:

spring.devtools.restart.log-condition-evaluation-delta=false

排除不需要觸發(fā)重啟的資源

我們的應(yīng)用中,某些資源的修改其實(shí)不需要重啟服務(wù),比如前端使用的靜態(tài)資源文件,默認(rèn)情況下,Spring Boot 在以下這些目錄中的資源變更時(shí),不會(huì)觸發(fā)重啟(但是會(huì)觸發(fā) live reload):

/META-INF/maven , /META-INF/resources , /resources , /static , /public , /templates

我們也可以手動(dòng)指定這些路徑:

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

如果你只是項(xiàng)額外增加路徑而不覆蓋 Spring Boot 提供的默認(rèn)設(shè)置時(shí),你可以設(shè)置這個(gè)屬性:

spring.devtools.restart.additional-exclude = /custom-path/**

當(dāng)你想設(shè)置的觸發(fā)重啟的文件不在 classpath 下的時(shí)候,你還可以使用以下設(shè)置作為觸發(fā)應(yīng)用重啟的條件:

spring.devtools.restart.additional-paths

禁用自動(dòng)重啟

如果你不想使用 devtools 提供的自動(dòng)重啟功能,你也可以設(shè)置 spring.devtools.restart.enabled 屬性來(lái)禁用它。

指定特殊文件觸發(fā)重啟

你可以通過(guò)設(shè)置 spring.devtools.restart.trigger-file 屬性來(lái)指定觸發(fā)重啟的文件(常用于 IDE 持續(xù)的自動(dòng)編譯 class 導(dǎo)致應(yīng)用一直重啟)。

自定義重啟使用的類(lèi)加載器

在上面我們說(shuō)過(guò) devtools 將會(huì)使用兩個(gè)類(lèi)加載器用于重啟應(yīng)用,我們可以通過(guò)以下屬性指定 classpath 下面的某個(gè)包使用哪個(gè)類(lèi)加載器:

restart.exclude.companycommonlibs=/mycorp-common-[\\w-]+\.jarrestart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar

注:以上的屬性需要添加到 classpath: META-INF/spring-devtools.properties 路徑下。

LiveReload

devtools 包含了內(nèi)置的服務(wù)器用于 live reload ,你可以通過(guò)屬性 spring.devtools.livereload.enabled 來(lái)禁它。

全局設(shè)置

你可以在本地目錄 ($HOME/.spring-boot-devtools.properties) 添加 devtools 的全局配置文件 (.spring-boot-devtools.properties )來(lái)設(shè)置 devtools。如:

windows

C:\Users\當(dāng)前用戶(hù)\.spring-boot-devtools.properties

結(jié)語(yǔ)

本篇文章介紹了 spring-boot-devtools,下一篇文章中,將會(huì)介紹遠(yuǎn)程應(yīng)用的運(yùn)行及更新。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Spring Boot 官方文檔學(xué)習(xí)(一)入門(mén)及使用
后端技術(shù):SpringBoot配置熱加載工具(devtools)筆記
springboot + devtools(熱部署)
SpringBoot熱部署配置
Spring Boot 配置加載順序詳解
IDEA Spring Boot 的三種熱加載方案,看完弄懂,不用加班~
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服