一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Spring DevTools的介紹

Spring DevTools的介紹

2021-06-25 13:37isea533 Java教程

今天小編就為大家分享一篇關(guān)于Spring DevTools的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

spring devtools 介紹

spring boot包括一組額外的工具,可以使應(yīng)用程序開發(fā)體驗更加愉快。spring-boot-devtools模塊可以包含在任何項目中,它可以節(jié)省大量的時間。 想要使用devtools支持,只需將模塊依賴關(guān)系添加到你的構(gòu)建中:

maven.

?
1
2
3
4
5
6
7
<dependencies>
  <dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-devtools</artifactid>
    <optional>true</optional>
  </dependency>
</dependencies>

gradle.

?
1
2
3
dependencies {
  compile("org.springframework.boot:spring-boot-devtools")
}

運行打包的應(yīng)用程序時,開發(fā)人員工具會自動禁用。如果你通過java -jar或者其他特殊的類加載器進(jìn)行啟動時,都會被認(rèn)為是“生產(chǎn)環(huán)境的應(yīng)用”。

將依賴標(biāo)記為optional可選是一種最佳做法,可以防止將devtools依賴傳遞到其他模塊中。gradle 不支持開箱即用的optional依賴項,你可以參考propdeps-plugin。

一、屬性默認(rèn)值

spring boot 支持的一些庫中會使用緩存來提高性能。例如模版引擎將緩存編譯后的模板,以避免重復(fù)解析模板文件。 此外,spring mvc可以在服務(wù)靜態(tài)資源時向響應(yīng)中添加http緩存頭。

雖然緩存在生產(chǎn)中非常有益,但它在開發(fā)過程中可能會產(chǎn)生反效果,它會阻止你看到剛剛在應(yīng)用程序中進(jìn)行的更改。 因此,spring-boot-devtools將默認(rèn)禁用這些緩存選項。

緩存選項通常在application.properties文件中配置。 例如,thymeleaf提供了spring.thymeleaf.cache屬性。spring-boot-devtools模塊不需要手動設(shè)置這些屬性,而是自動應(yīng)用合理的開發(fā)時配置。

二、自動重啟

spring-boot-devtools會在類路徑上的文件發(fā)生更改時自動重啟。 這在ide中工作時可能是一個有用的功能,因為它為代碼更改提供了非??斓姆答佈h(huán)。 默認(rèn)情況下會監(jiān)視類路徑上的所有變動,但請注意,某些資源(如靜態(tài)資源和視圖模板)不需要重啟應(yīng)用程序。

觸發(fā)重啟

當(dāng)devtools監(jiān)視類路徑資源時,觸發(fā)重啟的唯一方法是更新類路徑。 導(dǎo)致類路徑更新的方式取決于你正在使用的ide。在eclipse中,保存修改的文件將導(dǎo)致類路徑被更新并觸發(fā)重啟。 在intellij idea中,構(gòu)建項目( build -> make project )將具有相同的效果。

重新啟動和重新加載

spring boot提供的重新啟動技術(shù)使用了兩個類加載器。 不改變的類(例如,來自第三方j(luò)ar的)被加載到 base 類加載器中。 你正在開發(fā)的類被加載到 restart 類加載器中。 當(dāng)應(yīng)用程序重啟時, restart加載器將被丟棄,并創(chuàng)建一個新的類加載器。 這種方法意味著應(yīng)用程序重啟通常比“冷啟動”快得多,因為 base 加載器已經(jīng)已加載并且可用。

1. 排除資源

某些資源在更改時不一定需要觸發(fā)重啟。 例如,可以直接編輯thymeleaf模板。 默認(rèn)情況下,更改/meta-inf/maven , /meta-inf/resources , /resources , /static , /public或/templates中的資源不會觸發(fā)重啟,但會觸發(fā)實時重新加載。 如果要自定義這些排除項,可以使用spring.devtools.restart.exclude屬性。 例如,要僅排除/static和/public你將設(shè)置以下內(nèi)容:

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

如果你想保留上面的默認(rèn)(情況下的)值并添加其他的排除項,你可以使用spring.devtools.restart.additional-exclude屬性。

2. 監(jiān)控額外的路徑

當(dāng)你對不在類路徑中的文件進(jìn)行更改時,可能需要重啟或重新加載應(yīng)用程序。 為此,請使用spring.devtools.restart.additional-paths屬性來配置監(jiān)視其他路徑的更改。 你可以使用上述的spring.devtools.restart.exclude屬性來控制附加路徑下的更改是否會觸發(fā)完全重啟或只是實時重新加載 。

3. 禁用重啟

如果不想使用重啟功能,可以使用spring.devtools.restart.enabled屬性來禁用它。 在大多數(shù)情況下,你可以在application.properties中設(shè)置此項(這仍將初始化重啟類加載器,但不會監(jiān)視文件更改)。

例如,如果你需要完全禁用重啟支持,因為它不適用于特定庫,則需要在調(diào)用springapplication.run(…)之前設(shè)置system屬性。 例如:

?
1
2
3
4
public static void main(string[] args) {
  system.setproperty("spring.devtools.restart.enabled", "false");
  springapplication.run(myapp.class, args);
}

4. 使用觸發(fā)文件

如果你使用自動編譯已更改文件的ide,則可能希望僅在特定時間觸發(fā)重啟。 為此,你可以使用“觸發(fā)文件”,這是一個特殊文件,當(dāng)你要實際觸發(fā)重啟檢查時,必須修改它。 更改文件只會觸發(fā)檢查,只有在devtools檢測到它必須執(zhí)行某些操作時才會重啟。 觸發(fā)文件可以手動更新,也可以通過ide插件更新。

要使用觸發(fā)器文件,請使用spring.devtools.restart.trigger-file屬性。

如果你希望將spring.devtools.restart.trigger-file設(shè)置為全局配置,可以參考下面第四小節(jié)。

5. 自定義重啟類加載器

如上面重新啟動和重新加載部分所述,重啟功能是通過使用兩個類加載器實現(xiàn)的。 對于大多數(shù)應(yīng)用程序,此方法運行良好,但有時可能會導(dǎo)致類加載問題。

默認(rèn)情況下,ide中的任何打開的項目都會使用“restart”類加載器加載,任何常規(guī).jar文件將使用“base”類加載器加載。 如果你在多模塊項目上工作,但不是每個模塊都導(dǎo)入到ide中,則可能需要自定義配置。 為此,你可以創(chuàng)建一個meta-inf/spring-devtools.properties文件。

spring-devtools.properties文件可以包含restart.exclude. restart.include. 前綴的屬性。 include元素是應(yīng)該被放入“restart”類加載器的項目,exclude元素是應(yīng)該放入“base”類加載器的項目。 屬性的值是應(yīng)用于類路徑下的正則表達(dá)式。

例如:

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

針對通用mapper,可以做如下配置:

?
1
restart.include.mapper=/mapper-[\\w-\\.]+jar

所有屬性的鍵值(名字,companycommonlibs 部分)必須是唯一的,只有restart.exclude.restart.include. 開頭的屬性有效。

所有類路徑下面的meta-inf/spring-devtools.properties配置文件都會生效,所以你可以把該配置打包到每個模塊中。

注:新版本的mapper(3.4.1+)會默認(rèn)增加該配置。

6. 已知限制

重啟功能對使用標(biāo)準(zhǔn)objectinputstream對象序列化的對象不是很好 。如果需要反序列化數(shù)據(jù),可能需要使用spring的configurableobjectinputstream配合thread.currentthread().getcontextclassloader()使用。

不幸的是,一些第三方庫都不考慮在使用上下文類加載器的情況下反序列化。 如果你發(fā)現(xiàn)這樣的問題,你需要向原作者請求修復(fù)。

三、實時加載

spring-boot-devtools模塊包含嵌入式livereload服務(wù)器,可以在資源更改時用于觸發(fā)瀏覽器刷新。 livereload瀏覽器擴展程序支持chrome,firefox和safari,你可以從livereload.com免費下載。

如果你不想在應(yīng)用程序運行時啟動livereload服務(wù)器,則可以將spring.devtools.livereload.enabled屬性設(shè)置為false

同一時間只能運行一個livereload服務(wù)器。 開始應(yīng)用程序之前,請確保沒有其他livereload服務(wù)器正在運行。如果從ide啟動多個應(yīng)用程序,則只有第一個應(yīng)用程序?qū)⒅С謑ivereload。

四、全局設(shè)置

你可以通過向$home文件夾添加名為.spring-boot-devtools.properties的文件來配置全局devtools設(shè)置(請注意,文件名以“.”開頭)。 添加到此文件的任何屬性將適用于你的計算機上使用devtools的所有 spring boot應(yīng)用程序。 例如,要配置重啟始終使用觸發(fā)器文件 ,你可以添加以下內(nèi)容:

/.spring-boot-devtools.properties。

spring.devtools.reload.trigger-file=.reloadtrigger

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

原文鏈接:https://blog.csdn.net/isea533/article/details/70495714

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲 综合 自拍 精品 在线 | 亚洲sss综合天堂久久久 | 奇米影视奇米色777欧美 | 久久婷婷五月综合色精品首页 | 亚洲第一综合网 | 视频免费观看在线播放高清 | 深夜日韩| 色在线影院 | 国产福利片在线 易阳 | 日本一片免费观看高清完整 | 视频高h| 无码任你躁久久久久久久 | 手机在线免费观看高清 | 精品无码国产AV一区二区三区 | 日本视频观看 | 亚洲精品成人AV在线观看爽翻 | 日本高清视频网站 | 久久99国产综合精品AV蜜桃 | 国内精品露脸在线视频播放 | 乌克兰肥熟 | 亚洲国产午夜 | 亚洲欧美久久一区二区 | 久久亚洲成a人片 | 亚洲一二三区久久五月天婷婷 | 星星动漫无删减在线观看 | 91精品免费国产高清在线 | 色综合久久综合网欧美综合网 | 精品欧美一区二区三区四区 | 色多多视频网站 | 成功精品影院 | 我不卡影院手机在线观看 | 色啊色 | 午夜精品久久久内射近拍高清 | 天堂8在线天堂资源在线 | 色婷婷综合久久久 | 久久青青草原综合伊人 | 国产视频福利 | 思思99热久久精品在2019线 | 91男人| 91亚洲专区| 亚洲免费闲人蜜桃 |