日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

学习Spring Boot:(五)使用 devtools热部署

發布時間:2025/3/12 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习Spring Boot:(五)使用 devtools热部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

spring-boot-devtools 是一個為開發者服務的一個模塊,其中最重要的功能就是自動應用代碼更改到最新的App上面去。原理是在發現代碼有更改之后,重新啟動應用,但是比速度比手動停止后再啟動還要更快,更快指的不是節省出來的手工操作的時間。

其深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱為 restart ClassLoader

,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新創建一個restart ClassLoader,由于需要加載的類相比較少,所以實現了較快的重啟時間(5秒以內)。

正文

第一步:添加依賴

<!-- devtools可以實現頁面熱部署(即頁面修改后會立即生效,這個可以直接在application.properties文件中配置spring.thymeleaf.cache=false來實現), 實現類文件熱部署(類文件修改后不會立即生效),實現對屬性文件的熱部署。 即devtools會監聽classpath下的文件變動,并且會立即重啟應用(發生在保存時機),注意:因為其采用的虛擬機機制,該項重啟是很快的 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>

第二步:配置spring-boot-maven-plugin

<build> <plugins> <!-- 用于將應用打成可直接運行的jar(該jar就是用于生產環境中的jar) 值得注意的是,如果沒有引用spring-boot-starter-parent做parent, 且采用了上述的第二種方式,這里也要做出相應的改動 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--fork : 如果沒有該項配置,肯呢個devtools不會起作用,即應用不會restart --> <fork>true</fork> </configuration> </plugin> </plugins> </build>

第三步:開啟編譯器的自動編譯

  • Eclipse Project 在運行選項中查看是否開啟了Build Automatically,如果沒勾上,就選中勾上。Eclipse默認是自動編譯的。
  • IDEA 默認在非RUN或DEBUG情況下才會自動編譯。因此,我們在啟動Spring Boot后,再次修改類的時候不會自動編譯的,開啟在Run狀態自動編譯的流程如下:
  • setting -> build

  • Shift+Ctrl+Alt+/,選擇Registry;

  • 找到下面的選項,勾選上就行了:

    我的是已經勾選過了的,所以是藍顏色的提示,第一次就去找c開頭的就可以了。

第四步:運行測試

啟動項目,在run dashboard發現有devtools:

  • 修改類文件,項目重啟;
  • 修改配置文件,項目重啟。
  • 補充

  • 如果設置SpringApplication.setRegisterShutdownHook(false),則自動重啟將不起作用。
  • 默認情況下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public這些文件夾下的文件修改不會使應用重啟,但是會重新加載(devtools內嵌了一個LiveReload server,當資源發生改變時,瀏覽器刷新)。
  • 如果想改變默認的設置,可以自己設置不重啟的目錄:spring.devtools.restart.exclude=static/**,public/**,這樣的話,就只有這兩個目錄下的文件修改不會導致restart操作了。
  • 如果要在保留默認設置的基礎上還要添加其他的排除目錄:spring.devtools.restart.additional-exclude;
  • 如果想要使得當非classpath下的文件發生變化時應用得以重啟,使用:spring.devtools.restart.additional-paths,這樣devtools就會將該目錄列入了監聽范圍。
  • 設置 spring.devtools.restart.enabled 屬性為false,可以關閉自動重啟。可以在application.properties中設置,也可以通過設置環境變量的方式。
  • public static void main(String[] args){System.setProperty("spring.devtools.restart.enabled","false");SpringApplication.run(MyApp.class, args); } 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的学习Spring Boot:(五)使用 devtools热部署的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。