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

Spring Boot Devtools熱部署

記錄小技術,點滴成河。

平日裡開發專案中,修改了Java程式碼或者配置檔案的時候,必須手動重啟專案才能生效。所謂的熱部署就是在你修改了後端程式碼後不需要手動重啟,工具會幫你快速的自動重啟是修改生效。
其深層原理是使用了兩個ClassLoader,一個Classloader載入那些不會改變的類(第三方Jar包),另一個ClassLoader載入會更改的類,稱為restart ClassLoader,這樣在有程式碼更改的時候,原來的restart ClassLoader 被丟棄,重新建立一個restart ClassLoader,由於需要載入的類相比較少,所以實現了較快的重啟時間。
本文將介紹如何通過使用Spring-Boot-devtools來實現Spring Boot專案的熱部署。IDE使用的是Eclipse Oxygen,並且使用Maven構建。

引入Devtools

搭建一個簡單的Spring Boot專案,然後引入Spring-Boot-devtools:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

devtools會監聽classpath下的檔案變動,並且會立即重啟應用(發生在儲存時機),因為其採用的虛擬機器機制,該項重啟是很快的。

在Eclipse中生效還需要修改spring-boot-maven-plugin外掛:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

並且開啟Build Automatically:
在這裡插入圖片描述