Spring boot 采用devtools實(shí)現(xiàn)熱部署

Spring boot 采用devtools實(shí)現(xiàn)熱部署

什么是熱部署?

  • 熱部署,就是在應(yīng)用正在運(yùn)行的時(shí)候升級(jí)軟件,卻不需要重啟應(yīng)用。
  • 在平時(shí)編寫(xiě)代碼的時(shí)候,常常會(huì)出現(xiàn)我們只是簡(jiǎn)單把打印信息改變了,就需要重新部署,如果要改變這樣的方式,就需要用到熱部署。
  • 使用devtools這種方式可以實(shí)現(xiàn)大部分代碼的熱部署

認(rèn)識(shí)spring-boot-devtools

  • spring-boot-devtools 是一個(gè)為開(kāi)發(fā)者服務(wù)的一個(gè)模塊,其中最重要的功能就是自動(dòng)應(yīng)用代碼更改到最新的App上面去。原理是在發(fā)現(xiàn)代碼有更改之后,重新啟動(dòng)應(yīng)用,但是速度比手動(dòng)停止后再啟動(dòng)還要更快,更快指的不是節(jié)省出來(lái)的手工操作的時(shí)間。

  • 其深層原理是使用了兩個(gè)ClassLoader,一個(gè)Classloader加載那些不會(huì)改變的類(lèi)(第三方Jar包),另一個(gè)ClassLoader加載會(huì)更改的類(lèi),稱(chēng)為 restart ClassLoader ,這樣在有代碼更改的時(shí)候,原來(lái)的restart ClassLoader 被丟棄,重新創(chuàng)建一個(gè)restart ClassLoader,由于需要加載的類(lèi)相比較少,所以實(shí)現(xiàn)了較快的重啟時(shí)間(5秒以?xún)?nèi))。

使用方法

  • 在項(xiàng)目中的pom.xml中plugin里添加依賴(lài)
  <!-- spring boot devtools 依賴(lài)包 -->
  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
      <scope>true</scope>
  </dependency>
  • build節(jié)點(diǎn)
<build>
   <plugins>  
     <!-- 這是spring boot devtool plugin -->
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
           <configuration>  
             <!-- 如果沒(méi)有該項(xiàng)配置devtools不會(huì)起作用-->
            <fork>true</fork>
         </configuration> 
     </plugin> 
  </plugins>
</build>
  • 開(kāi)啟IDEA的自動(dòng)構(gòu)建功能,如下圖所示:


    image
  • Intellij IEDA 使用ctrl+shift+a 快捷鍵搜索Registry,選擇搜索出來(lái)的第一個(gè)如下圖,回車(chē)
    image
  • 勾選下圖中的complier.automake.allow.when.app.running


    image
  • 配置完成,重新啟動(dòng)項(xiàng)目可以試著修改代碼,熱部署成功,也加快了開(kāi)發(fā)速度。

說(shuō)明

  • devtools會(huì)監(jiān)聽(tīng)classpath下的文件變動(dòng),并且會(huì)立即重啟應(yīng)用(發(fā)生在保存時(shí)機(jī)),注意:因?yàn)槠洳捎玫奶摂M機(jī)機(jī)制,該項(xiàng)重啟是很快的。
  • devtools可以實(shí)現(xiàn)頁(yè)面熱部署(即頁(yè)面修改后會(huì)立即生效,這個(gè)可以直接在application.properties文件中配置spring.thymeleaf.cache=false來(lái)實(shí)現(xiàn)(這里注意不同的模板配置不一樣)。
  • 修改以下代碼都不需要重啟服務(wù)器:修改類(lèi)、配置文件、頁(yè)面文件(原理是將spring.thymeleaf.cache設(shè)為false)之后ctrl+s:應(yīng)用會(huì)重啟。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容