1. 程式人生 > >Spring Boot的devtools的熱部署

Spring Boot的devtools的熱部署

一 點睛

1 熱部署 

devtools可以實現頁面熱部署,即頁面修改後會立即生效。

這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false來實現。

實現類檔案熱部署:類檔案修改後不會立即生效,實現對屬性檔案的熱部署。

devtools會監聽classpath下的檔案變動,並且會在儲存檔案時,立即重啟應用。

因為其採用的虛擬機器機制,該項重啟是很快的。

(1)base classloader (Base類載入器):載入不改變的Class,例如:第三方提供的jar包。 

(2)restart classloader(Restart類載入器):載入正在開發的Class。

為什麼重啟很快,因為重啟的時候只是載入了在開發的Class,沒有重新載入第三方的jar包。 

二 引入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- optional=true, 依賴不會傳遞, 該專案依賴devtools;
        之後依賴boot專案的專案如果想要使用devtools, 需要重新引入 -->
    <optional>true</optional>
</dependency>

三 配置

#關閉快取,即時重新整理
#spring.freemarker.cache=false
#spring.thymeleaf.cache=true

#熱部署生效
spring.devtools.restart.enabled=true
#設定重啟的目錄,新增哪個目錄的檔案需要restart
spring.devtools.restart.additional-paths=src/main/java
# 為mybatis設定,生產環境可刪除
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
#排除哪個目錄的檔案不需要restart
#spring.devtools.restart.exclude=static/**,public/**
#classpath目錄下的WEB-INF檔案內容修改不重啟
#spring.devtools.restart.exclude=WEB-INF/**

四 測試

修改其中一個Java檔案,然後儲存,發現專案立即重啟。