Spring Boot 開(kāi)發(fā)環(huán)境熱部署詳細(xì)教程
在實(shí)際的項(xiàng)目開(kāi)發(fā)過(guò)中,當(dāng)我們修改了某個(gè)java類文件時(shí),需要手動(dòng)重新編譯、然后重新啟動(dòng)程序的,整個(gè)過(guò)程比較麻煩,特別是項(xiàng)目啟動(dòng)慢的時(shí)候,更是影響開(kāi)發(fā)效率。其實(shí)Spring Boot的項(xiàng)目碰到這種情況,同樣也同樣需要經(jīng)歷重新編譯、重新啟動(dòng)程序的過(guò)程。 只不過(guò) Spring Boot 提供了一個(gè)spring-boot-devtools的模塊,使得 Spring Boot應(yīng)用支持熱部署,無(wú)需手動(dòng)重啟Spring Boot應(yīng)用,,提高開(kāi)發(fā)者的開(kāi)發(fā)效率。接下來(lái),聊一聊Spring Boot 開(kāi)發(fā)環(huán)境熱部署。
一、原理
devtools使用了兩個(gè)類加載器(ClassLoader),一個(gè)是 Base類加載器(base classloader):加載那些不會(huì)改變的類,如:第三方Jar包等,而另一個(gè)是 Restart類加載器(restart classloader):負(fù)責(zé)加載那些正在開(kāi)發(fā)的會(huì)改變的類。這樣在有代碼更改的時(shí)候,因?yàn)橹貑⒌臅r(shí)候只是加載了在開(kāi)發(fā)的Class類,沒(méi)有重新加載第三方的jar包,所以實(shí)現(xiàn)了較快的重啟時(shí)間。
devtools 監(jiān)聽(tīng)classpath下的文件變動(dòng)(發(fā)生在保存時(shí)機(jī)),并且會(huì)立即重啟應(yīng)用。從而實(shí)現(xiàn)類文件和屬性文件的熱部署。
二、快速配置
1、pom配置
引入devtools的依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- optional=true, 依賴不會(huì)傳遞, 該項(xiàng)目依賴devtools;之后依賴boot項(xiàng)目的項(xiàng)目如果想要使用devtools, 需要重新引入 --> <optional>true</optional> </dependency>
注意:optional=true, 依賴不會(huì)傳遞, 該項(xiàng)目依賴devtools;之后依賴boot項(xiàng)目的項(xiàng)目如果想要使用devtools, 需要重新引入。
2、application.properties配置
在application.properties中配置devtools。
# 關(guān)閉緩存即時(shí)刷新 #spring.thymeleaf.cache=false #熱部署生效 spring.devtools.restart.enabled=true #設(shè)置重啟的目錄 spring.devtools.restart.additional-paths=src/main/java #classpath目錄下的WEB-INF文件夾內(nèi)容修改不重啟 spring.devtools.restart.exclude=WEB-INF/**
說(shuō)明:
devtools可以實(shí)現(xiàn)頁(yè)面熱部署,即頁(yè)面修改后會(huì)立即生效,需要將application.properties文件中配置spring.thymeleaf.cache=false。
devtools會(huì)監(jiān)聽(tīng)classpath下的文件變動(dòng),并且會(huì)立即重啟應(yīng)用。
3、IDEA配置
如果idea是新安裝的或者之前就沒(méi)有配置過(guò),發(fā)現(xiàn)改變代碼項(xiàng)目熱部署不成功。當(dāng)我們修改了Java類后,IDEA默認(rèn)是不自動(dòng)編譯的,而spring-boot-devtools又是監(jiān)測(cè)classpath下的文件發(fā)生變化才會(huì)重啟應(yīng)用。
所以需要設(shè)置IDEA的自動(dòng)編譯:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,選擇Registry,勾上 Compiler autoMake allow when app running
這樣,就可以使用devtools實(shí)現(xiàn)熱部署了。
最后
以上,就把如何配置Spring Boot 開(kāi)發(fā)環(huán)境熱部署介紹完了。還是比較簡(jiǎn)單的,大家自己去研究吧。
到此這篇關(guān)于Spring Boot 開(kāi)發(fā)環(huán)境熱部署詳細(xì)教程的文章就介紹到這了,更多相關(guān)Spring Boot 開(kāi)發(fā)環(huán)境熱部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot多模塊多環(huán)境配置文件問(wèn)題(動(dòng)態(tài)配置生產(chǎn)和開(kāi)發(fā)環(huán)境)
- IntelliJ IDEA基于SpringBoot如何搭建SSM開(kāi)發(fā)環(huán)境的步驟詳解
- macOS下Spring Boot開(kāi)發(fā)環(huán)境搭建教程
- 使用IDEA搭建一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目超詳細(xì)過(guò)程
- VsCode搭建Spring Boot項(xiàng)目并進(jìn)行創(chuàng)建、運(yùn)行、調(diào)試
- 運(yùn)用springboot搭建并部署web項(xiàng)目的示例
- Spring Boot項(xiàng)目搭建的兩種方式
相關(guān)文章
關(guān)于Lists.partition集合分組使用以及注意事項(xiàng)
這篇文章主要介紹了關(guān)于Lists.partition集合分組使用以及注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
Java中Comparator與Comparable排序的區(qū)別詳解
這篇文章主要介紹了Java中Comparator與Comparable排序的區(qū)別詳解,如果你有一個(gè)類,希望支持同類型的自定義比較策略,可以實(shí)現(xiàn)接口Comparable,如果某個(gè)類,沒(méi)有實(shí)現(xiàn)Comparable,但是又希望對(duì)它進(jìn)行比較,則可以自定義一個(gè)Comparator,需要的朋友可以參考下2024-01-01
MyBatis-Plus流式查詢的實(shí)現(xiàn)示例
MyBatis-Plus 從 3.5.4 版本開(kāi)始支持流式查詢,通過(guò)ResultHandler接口實(shí)現(xiàn)結(jié)果集的流式查詢,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
SpringCloud Gateway 利用 Mysql 實(shí)現(xiàn)動(dòng)態(tài)路由的方法
這篇文章主要介紹了SpringCloud Gateway 利用 Mysql 實(shí)現(xiàn)動(dòng)態(tài)路由的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
lombok注解@Data使用在繼承類上時(shí)出現(xiàn)警告的問(wèn)題及解決
Lombok的@Data注解簡(jiǎn)化了實(shí)體類代碼,但在子類中使用時(shí)會(huì)出現(xiàn)警告,指出equals和hashCode方法不會(huì)考慮父類屬性,解決方法有兩種:一是在父類上使用@EqualsAndHashCode(callSuper=true)注解;二是通過(guò)配置lombok.config文件,均能有效解決警告問(wèn)題2024-10-10
springboot日期格式化全局LocalDateTime詳解
文章主要分析了Spring Boot中ObjectMapper對(duì)象的序列化和反序列化過(guò)程,并具體探討了日期格式化問(wèn)題,通過(guò)分析Spring Boot的自動(dòng)配置類JacksonAutoConfiguration,文章詳細(xì)說(shuō)明了ObjectMapper對(duì)象的創(chuàng)建和配置過(guò)程2025-02-02
Spring中@Configuration注解和@Component注解的區(qū)別詳解
這篇文章主要介紹了Spring中@Configuration注解和@Component注解的區(qū)別詳解,@Configuration 和 @Component 到底有何區(qū)別呢?我先通過(guò)如下一個(gè)案例,在不分析源碼的情況下,小伙伴們先來(lái)直觀感受一下這兩個(gè)之間的區(qū)別,需要的朋友可以參考下2023-09-09
Spring Cloud Consul的服務(wù)注冊(cè)與發(fā)現(xiàn)
這篇文章主要介紹了Spring Cloud Consul服務(wù)注冊(cè)與發(fā)現(xiàn)的實(shí)現(xiàn)方法,幫助大家更好的理解和學(xué)習(xí)使用spring框架,感興趣的朋友可以了解下2021-02-02
MyBatis-Plus多表聯(lián)查的實(shí)現(xiàn)方法(動(dòng)態(tài)查詢和靜態(tài)查詢)
本文用示例介紹使用MyBatis-Plus進(jìn)行多表查詢的方法,包括靜態(tài)查詢和動(dòng)態(tài)查詢,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-03-03

