Spring Boot 入門示例(三): Spring Boot 熱部署

Spring Boot 使用 devtools 實現熱部署

概述

在進行 Spring Boot 的 Web 項目開發中,我們經常會遇到源代碼文件、配置文件等的修改,但每次修改後都會重啓 Web 服務器才能修改後的文件生效,這樣很耗時,影響開發效率。而熱部署就是不需要重啓 Web 服務器就可以保證各項文件修改後便立即生效。

spring-boot-devtools 介紹

  • spring-boot-devtools 是一個爲開發者服務的模塊,可以實現 Spring Boot 熱部署,其中最重要的功能就是自動將應用代碼更改到最新的 App 上面去。

  • spring-boot-devtools 可以實現頁面熱部署,實現類文件熱部署(類文件修改後不會立即生效),實現對屬性配置文件的熱部署。其原理是 spring-boot-devtools 會監聽 Classpath 下的文件變動,並且會立即重啓應用(發生在保存時機)。

  • 由於採用的虛擬機機制,重啓的時候只是加載了在開發的 Class,沒有重新加載第三方的 JAR 包,所以重啓是很快的。

配置熱部署

  • 在 pom.xml 文件中,添加項目 spring-boot-devtools 依賴
<!--熱部署依賴-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
 </dependency>

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <!--沒有該項配置,熱部署不會起作用-->
    <configuration>
        <fork>true</fork>
    </configuration>
 </plugin>
  • 在資源文件 application.properties 中進行熱部署的相關配置
# 頁面修改後立即生效,關閉緩存,立即刷新
spring.thymeleaf.cache=false
# 熱部署生效
spring.devtools.restart.enabled=true
# 設置需要重啓的目錄
spring.devtools.restart.additional-paths=src/java/main
# 設置不需要重啓的目錄
spring.devtools.restart.exclude=static/**,public/**,WEB-INF/**
# 爲 mybatis 設置,生產環境可刪除
# restart.include.mapper=/mapper-[\\w-\\.]+jar
# restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar

當熱部署搭建完成後,程序只要啓動一次即可,後面修改代碼時,只需保存後便可以觸發熱部署機制,自動重啓服務。

設置 IDEA 環境自動編譯

在使用 IDEA 編譯器時,需要設置自動編譯。

  • 在編譯器選項中勾選 Build project automatically 選項

compiler

  • 使用快捷鍵:Ctrl + Alt + Shift + / 調出 Registry 窗口,勾選 compiler.automake.allow.when.app.running 選項
    registry

後記

由於自身能力有限,若有錯誤或者不當之處,還請大家批評指正,一起學習交流!

GitHub 源碼地址:springboot-devtools

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