SpringBoot使用DevTools實現熱部署

在項目的開發中,當每次修改了後臺代碼後都需要重啓服務,這樣降低了開發效率。下面將介紹在SpringBoot項目中使用DevTools實現熱部署。

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

深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱爲restart ClassLoader,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新創建一個restart ClassLoader,由於需要加載的類相比較少,所以實現了較快的重啓時間。

1、添加DevTools模塊

方法一:在創建SpringBoot項目時選擇添加模塊

方法二:pom.xml文件的配置

<!-- 引入devtools熱部署 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>

 

2、編輯application.yml配置文件

在application.yml配置文件中添加相關配置信息。

spring:
  devtools:
    restart:
      enabled: true  #設置開啓熱部署
      additional-paths: src/main/java #重啓目錄
      exclude: WEB-INF/**
  thymeleaf:
    cache: false #使用Thymeleaf模板引擎,關閉緩存

 

3、IDEA的相關設置

(1)菜單:File → Settings → Build, Execution, Deployment → Compiler

在右側的選項中找到 Build project automatically 選項並勾選,如下圖:

(2)快捷鍵 Ctrl + Shift + Alt + / ,點擊Registry項。

然後找到 compiler.automake.allow.when.app.running 選項並勾選,如下圖:

 

4、解決靜態文件不更新的問題

當我們更改了靜態文件(如:HTML頁面)後,也希望刷新瀏覽器後能夠看到修改效果。

(1)首先在application.yml配置文件中要關閉Thymeleaf模板引擎的緩存。

(2)設置SpringBoot容器。

將 On frame deactivation 選項設置爲: Update classes and resources,如下圖:

這樣當我們修改了靜態文件HTML文件,保存後,直接刷新瀏覽器就可以看到修改後的效果了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章