1. 程式人生 > >基於Maven的SpringBoot專案實現熱部署的兩種方式

基於Maven的SpringBoot專案實現熱部署的兩種方式

前言

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 沒記錯的話是預設自動編譯

參考文章