在IDEA下SpringBoot專案熱部署配置(基於最新的SpringBoot2.0.6)
關於SpringBoot最權威(沒有之一)的文件,當然是來自官方手冊:https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/
本文要介紹的專案熱部署,我分為IDEA配置和SpringBoot配置。
1、IDEA的配置
1.1.開啟專案自動編譯
1.2.開啟專案執行時編譯器自動編譯
2、SpringBoot配置
2.1.依賴SpringBoot開發工具starter
SpringBoot提供了一個用於提高開發體驗的類庫叫做devtools,其中包括熱部署(快速重啟)。該技術的深層原理是使用了兩個ClassLoader(類載入器),一個Classloader載入那些不會改變的類(第三方Jar包),另一個ClassLoader載入會更改的類,稱為restart ClassLoader,這樣在有程式碼更改的時候,原來的restart ClassLoader 被丟棄,重新建立一個restart ClassLoader,由於需要載入的類相比較少,所以實現了較快的重啟時間。
引入該類庫需要在pom.xml中新增如下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2.2.build的外掛引入springloaded庫
(該配置主要在eclipse中生效,IDEA不需要)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<!-- spring熱部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
2.3.靜態資源目錄排除
有時候在開發期間,修改了java程式碼、xml、properties配置等需要熱部署,但修改js、html等不需要重啟,那麼可以排除監聽部分目錄。在專案的application.properties檔案中新增如下配置:
spring.devtools.restart.enabled=true
spring.devtools.restart.exclude=static/**,templates/**,META-INF/**
---------------------