基於Maven的SpringBoot專案實現熱部署的兩種方式
阿新 • • 發佈:2018-12-24
前言
JRebel是JavaEE中比較流行的熱部署外掛,可快速實現熱部署,節省了大量重啟時間,提高了個人開發效率。看一張圖就知道了:
我這裡提到JRebel的目的主要是說明熱部署工具帶來的優勢:節省時間,提高開發效率
下面我將介紹使用maven構建的SpringBoot專案中實現熱部署的兩種方式,使得部署變得異常簡單,同時兩種方式也非常的簡單。
熱部署
devtools
Pom.xml中直接新增依賴即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>provided</scope>
<!--optional我沒弄明白,都說必須為true,但我測試true,false,不加都可以-->
<optional>true</optional>
</dependency>
通過專案主程式入口啟動即可,改動以後重新編譯就好。
springloaded
Pom.xml中直接在spring-boot外掛中新增依賴即可:
<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>
<configuration>
<mainClass>cn.springboot.Mainspringboot</mainClass>
</configuration>
</plugin>
執行:
$ mvn clean spring-boot:run
改動後,編譯即可實現熱部署
結束語
這兩種方式其實都是spring官網為了spring專案所推出的jar包,加之springBoot框架內嵌伺服器的優勢,使得改動後的專案部署變得非常簡單;當我使用以後這兩種方法以後,發現真正實現熱部署的只是後者,前者只是實現了熱啟動而已,從控制檯日誌就可以看出來。
說明
- 專案使用maven管理,不然這篇簡單實用的文章不適合你
- 第一種方式配置檔案改動後不能觸發熱啟動
- 第二種方式配置檔案改動後不能觸發熱部署,會提示一下錯誤
2017-05-24 11:54:53.276 ERROR 12063 --- [[email protected]18b4aac2] org.springsource.loaded.ReloadableType : Unable to find regeneration methods for cglib proxies - proxies will be out of date for this type
- 由於使用IDE的不同,編譯快捷鍵也可能不同,筆者實用intellij idea ,對應快捷鍵 Ctrl+Shift+F9,也可以設定自動編譯(見這篇文章),eclipse 沒記錯的話是預設自動編譯