Spring Boot Devtools熱部署
阿新 • • 發佈:2018-12-27
記錄小技術,點滴成河。
平日裡開發專案中,修改了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: