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

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

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

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - Spring Boot DevTools使用教程

Spring Boot DevTools使用教程

2021-06-10 15:25jdon Java教程

DevTools通過(guò)提供自動(dòng)重啟和LiveReload功能,使您更快、更輕松地開(kāi)發(fā)Spring Boot應(yīng)用程序。這篇文章主要介紹了Spring Boot DevTools使用教程,需要的朋友可以參考下

devtools通過(guò)提供自動(dòng)重啟和livereload功能,使您更快、更輕松地開(kāi)發(fā)spring boot應(yīng)用程序。除此之外,它還將各種屬性設(shè)置為更適合本地開(kāi)發(fā)的值。此外,它允許您遠(yuǎn)程連接到您的應(yīng)用程序,并仍然使用其大部分功能。在生產(chǎn)中運(yùn)行時(shí),不要使用devtools。

如何使用devtools進(jìn)一步加快spring boot開(kāi)發(fā)速度?你需要做的就是添加正確的依賴關(guān)系,與spring boot一樣,設(shè)置非常簡(jiǎn)單。

如果您使用maven:

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

或者,使用gradle時(shí):

?
1
2
3
4
5
6
7
8
9
configurations {
 developmentonly
 runtimeclasspath {
  extendsfrom developmentonly
 }
}
dependencies {
 developmentonly("org.springframework.boot:spring-boot-devtools")
}

依賴項(xiàng)聲明為可選。這個(gè)很重要。這可以防止devtools依賴性傳遞性地應(yīng)用于依賴于你項(xiàng)目的其他模塊。

自動(dòng)重啟

每當(dāng)類(lèi)路徑中的文件發(fā)生更改時(shí),devtools會(huì)自動(dòng)重新啟動(dòng)正在運(yùn)行的應(yīng)用程序,并應(yīng)用新的更改。在本地開(kāi)發(fā)時(shí),這可能很有價(jià)值,因?yàn)槟恍枰謩?dòng)重新部署應(yīng)用程序。

重啟仍然需要花費(fèi)很多時(shí)間,你可能認(rèn)為它不會(huì)那么有用,。幸運(yùn)的是,這些重啟比常規(guī)重啟更快,因?yàn)閐evtools使用了一個(gè)聰明的技巧。

在開(kāi)發(fā)應(yīng)用程序時(shí),您通常會(huì)更改一個(gè)或多個(gè)類(lèi),并希望檢查正在運(yùn)行的應(yīng)用程序中的結(jié)果以獲得反饋。您更改應(yīng)用程序的一小部分,因?yàn)榇蠖鄶?shù)加載的類(lèi)來(lái)自框架和第三方庫(kù)。

,spring devtools使用兩個(gè)類(lèi)加載器 - base和restart。base類(lèi)加載器加載不更改的類(lèi)。你正在使用的類(lèi)由restart類(lèi)加載器加載。每當(dāng)觸發(fā)重啟時(shí),都會(huì)重新啟動(dòng)并重新創(chuàng)建restart的類(lèi)加載器。這樣重新啟動(dòng)應(yīng)用程序的速度比平常快得多,并且可以使用jrebel等工具作為動(dòng)態(tài)類(lèi)重新加載的替代方法。

在ide中觸發(fā)重新啟動(dòng)

只要類(lèi)路徑發(fā)生更改,就會(huì)觸發(fā)重新啟動(dòng)。但是,這取決于您的ide。這意味著,僅僅更改.java文件是不夠的。重要的是您的ide實(shí)際上更新.class了類(lèi)路徑上的文件。

使用intellij idea時(shí),您需要構(gòu)建項(xiàng)目(ctrl + f9或build→build project)。您還可以將idea配置為自動(dòng)重建。或者,需要打開(kāi)spring boot運(yùn)行配置并定義觸發(fā)應(yīng)用程序更新時(shí)發(fā)生的情況,alt + shift + f10 或f9 進(jìn)行運(yùn)行配置,選擇編輯配置:

在on update action中選擇update trigger file,在調(diào)用update操作時(shí)觸發(fā)devtools的restart;甚至可以選擇嘗試熱插拔的選項(xiàng),并僅在熱插拔失敗時(shí)使用devtools重新啟動(dòng)。

在on frame deactivation中選擇update classes and resources。在idea窗口失去焦點(diǎn)時(shí)重新加載所有靜態(tài)資源和模板(例如,切換到瀏覽器窗口時(shí))。

確認(rèn)后,修改源碼,切換到瀏覽器,刷新瀏覽器,可以看到更新后的結(jié)果,如果還不行按(ctrl + f10)強(qiáng)行更新重啟。

僅限開(kāi)發(fā)

spring boot devtools的用法僅用于開(kāi)發(fā),而不用于生產(chǎn)。如果您的應(yīng)用程序檢測(cè)到您正在生產(chǎn)中運(yùn)行,則會(huì)自動(dòng)禁用devtools。

部署時(shí)有兩種模式:fully packaged artifact完全打包和exploded artifact ;采取前者打包方式spring會(huì)認(rèn)為是生產(chǎn)應(yīng)用;后者認(rèn)為是開(kāi)發(fā)模式,在idea等ide中采取的是后者。

live reload

livereload 是一個(gè)有用的工具,它允許您在文件中進(jìn)行更改時(shí)立即在瀏覽器中更新頁(yè)面,如html,css,圖像等。它甚至可以根據(jù)需要預(yù)處理文件 - 這意味著自動(dòng)編譯sass或less文件。

spring devtools自動(dòng)啟動(dòng)livereload服務(wù)器的本地實(shí)例,該服務(wù)器監(jiān)視您的文件。您需要做的就是安裝一個(gè) 瀏覽器擴(kuò)展 ,然后你就可以了。它不僅可用于開(kāi)發(fā)應(yīng)用程序的前端(如果將其作為spring應(yīng)用程序工件的一部分進(jìn)行分發(fā)),還可用于監(jiān)視和重新加載rest api的輸出。

屬性覆蓋

在本地開(kāi)發(fā)應(yīng)用程序時(shí),與在生產(chǎn)環(huán)境相比通常需要不同的配置。自己管理多組配置是不必要的復(fù)雜。好消息是spring boot devtools為您的本地開(kāi)發(fā)配置了許多開(kāi)箱即用的屬性。

?
1
2
3
4
5
6
7
8
9
10
11
12
spring.thymeleaf.cache=false
spring.freemarker.cache=false
spring.groovy.template.cache=false
spring.mustache.cache=false
server.servlet.session.persistent=true
spring.h2.console.enabled=true
spring.resources.cache.period=0
spring.resources.chain.cache=false
spring.template.provider.cache=false
spring.mvc.log-resolved-exception=true
server.servlet.jsp.init-parameters.development=true
spring.reactor.stacktrace-mode.enabled=true

可以檢查 devtoolspropertydefaultspostprocessor 中所有屬性的 列表 。

遠(yuǎn)程連接

除本地開(kāi)發(fā)外,您還可以連接到運(yùn)行devtools的遠(yuǎn)程應(yīng)用程序。這不適用于生產(chǎn)環(huán)境,因?yàn)樗赡苁且粋€(gè)嚴(yán)重的安全風(fēng)險(xiǎn)。但是,它在預(yù)生產(chǎn)環(huán)境中非常有用。

默認(rèn)情況下不啟用遠(yuǎn)程連接。您需要通過(guò)修改pom文件顯式啟用它:

?
1
2
3
4
5
6
7
8
9
10
11
<build>
 <plugins>
  <plugin>
   <groupid>org.springframework.boot</groupid>
   <artifactid>spring-boot-maven-plugin</artifactid>
   <configuration>
    <excludedevtools>false</excludedevtools>
   </configuration>
  </plugin>
 </plugins>
</build>

然后,您需要設(shè)置一個(gè)密碼,以便在連接到遠(yuǎn)程應(yīng)用程序時(shí)用于身份驗(yàn)證:

spring.devtools.remote.secret=somesecret

遠(yuǎn)程應(yīng)用程序運(yùn)行后,您可以啟動(dòng)遠(yuǎn)程連接會(huì)話,現(xiàn)在,您需要啟動(dòng)org.springframework.boot.devtools.remotespringapplication,使用遠(yuǎn)程應(yīng)用程序的url作為參數(shù)啟動(dòng)。請(qǐng)注意,https如果可能,請(qǐng)使用https。

在ide中輕松運(yùn)行遠(yuǎn)程連接。在idea中,您只需創(chuàng)建一個(gè)新的運(yùn)行配置。轉(zhuǎn)到run → edit configurations...并創(chuàng)建一個(gè)+左上角帶有圖標(biāo)的新配置。選擇application類(lèi)型。

從devtools模塊中選擇remotespringapplication作為main類(lèi),并設(shè)置遠(yuǎn)程參數(shù)遠(yuǎn)程應(yīng)用程序的url。

運(yùn)行此配置后,如果與遠(yuǎn)程應(yīng)用程序的連接成功,您應(yīng)該會(huì)看到相應(yīng)的輸出。

連接到遠(yuǎn)程應(yīng)用程序后,devtools監(jiān)視類(lèi)路徑更改,與本地開(kāi)發(fā)相同。但是,它不是本地重新啟動(dòng),而是將更改推送到遠(yuǎn)程服務(wù)器并在那里觸發(fā)重新啟動(dòng)。這比構(gòu)建應(yīng)用程序和部署到遠(yuǎn)程計(jì)算機(jī)要快得多。

全局配置

可以像使用任何其他spring應(yīng)用程序一樣使用配置屬性配置devtools。這通常意味著編輯application.properties您的項(xiàng)目。此配置對(duì)于每個(gè)應(yīng)用程序是獨(dú)立的。

但是,在某些情況下,為同一臺(tái)計(jì)算機(jī)上運(yùn)行的所有應(yīng)用程序進(jìn)行全局配置可能很方便。您可以創(chuàng)建一個(gè)名為.spring-boot-devtools.properties位于$home目錄中的屬性文件。此文件中聲明的配置將應(yīng)用于運(yùn)行devtools的所有應(yīng)用程序。

限制

使用devtools的spring應(yīng)用程序會(huì)自動(dòng)啟動(dòng)livereload服務(wù)器。不幸的是,此服務(wù)器中只有一個(gè)實(shí)例可以同時(shí)運(yùn)行。更確切地說(shuō),只有第一個(gè)可行。這不僅適用于使用devtools的spring應(yīng)用程序的多個(gè)實(shí)例,也適用于任何其他應(yīng)用程序,這些應(yīng)用程序也在后臺(tái)使用liverreload,例如 gatsby 在開(kāi)發(fā)模式下。

如果要將spring應(yīng)用程序配置為不啟動(dòng)livereload服務(wù)器,可以在application.properties加入:

spring.devtools.livereload.enabled=false

關(guān)機(jī)鉤shutdownhook

devtools依賴于 關(guān)機(jī)掛鉤 的springapplication。如果您使用以下方法手動(dòng)禁用掛鉤,它將無(wú)法正常工作:

springapplication.setregistershutdownhook(false);

認(rèn)情況下,掛鉤已啟用,因此除非您明確禁用它,否則無(wú)需擔(dān)心它。

與第三方庫(kù)的沖突

devtools通常應(yīng)該正常運(yùn)行,但它可能與第三方庫(kù)有沖突。特別是, 已知問(wèn)題 是使用標(biāo)準(zhǔn)objectinputstream進(jìn)行反序列化存在存在沖突。如果發(fā)生此類(lèi)沖突,您可以通過(guò)設(shè)置禁用自動(dòng)重啟:

spring.devtools.restart.enabled=false

將不再觸發(fā)重啟。但是,仍將使用重新啟動(dòng)類(lèi)加載器。如果您需要完全禁用類(lèi)加載器,則需要在啟動(dòng)應(yīng)用程序之前執(zhí)行此操作:

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

即使您不使用自動(dòng)重啟,您仍然可以從devtools提供的其他功能中受益。

總結(jié)

以上所述是小編給大家介紹的spring boot devtools使用教程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!

原文鏈接:https://www.jdon.com/50644

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产福利在线观看一区 | 操破苍穹小说 | 校花被老头夺去第一次动图 | 国色天香社区视频免费观看3 | 无人区在线观看免费国语完整版 | 亚洲国产第一区二区三区 | 麻豆视频免费在线播放 | 色哺乳妇hd| 女人和拘做受全过程免费 | 男女性gif抽搐出入视频 | 亚洲人成影院午夜网站 | a亚洲天堂 | 精品午夜视频 | 干露露视频 性感写真 | 国产午夜亚洲精品不卡 | 成人在线免费观看 | 无限资源在线观看播放 | 5g影院天天5g天天爽大陆 | 色狠狠狠狠狠香蕉 | 亚洲卡一卡2卡三卡4麻豆 | 精品成人一区二区 | 国产成人亚洲精品91专区高清 | 99pao在线视频精品免费 | 亚洲精品卡一卡2卡3卡4卡 | 99久久精品6在线播放 | 69福利区 | 亚洲免费视频一区二区三区 | 精品国产中文字幕在线视频 | 久久人妻少妇嫩草AV無碼 | 1024免费观看完整版在线播放 | 5g影院天天5g天天爽大陆 | 女人用粗大自熨喷水在线视频 | 万域之王动漫在线观看全集免费播放 | 国产caoni555在线观看 | 日韩综合一区 | 桃乃木香奈作品在线观看 | 久久综合给会久久狠狠狠 | 视频免费| 911爱豆传媒国产 | sese在线| avtt在线观看 |