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
選項
- 使用快捷鍵:
Ctrl + Alt + Shift + /
調出 Registry 窗口,勾選compiler.automake.allow.when.app.running
選項
後記
由於自身能力有限,若有錯誤或者不當之處,還請大家批評指正,一起學習交流!
GitHub 源碼地址:springboot-devtools