Spring Boot :熱部署

weixin_34075268發表於2018-01-19

概述

  • 開發過程中常常會改動程式碼,為了檢視修改每次都需要重新編譯程式碼執行伺服器,這樣很影響開發效率
  • 應用啟動後會把編譯好的Class檔案載入的虛擬機器中,正常情況下在專案修改了原始檔是需要全部重新編譯並重新載入(需要重啟應用)。而熱部署就是監聽Class檔案的變動,只把發生修改的Class重新載入,而不需要重啟應用,使得開發變得簡便

Spring Boot 實現熱部署

方式一(Maven 外掛 springloaded)

在 spring-boot-maven-plugin 外掛中新增 springloaded 依賴

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <dependencies>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>springloaded</artifactId>
                    <version>1.2.5.RELEASE</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

通過 mvn spring-boot:run 啟動應用(直接執行應用無效),修改 controller 中程式碼後結果會跟著變化

  • 該方式只對 mvn spring-boot:run 這種方式啟動應用有效,而對直接執行Application.java啟動應用無效
  • 如果使用 Thymeleaf 模板引擎,則需要把模板預設快取設定為 false
spring.thymeleaf.cache=false

方式二(依賴 spring-boot-devtools 熱部署模組)

新增依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
    <scope>true</scope>
</dependency>
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <fork>true</fork>
        </configuration>
</plugin>

修改 controller 程式碼後結果會跟著變化

IDEA 配置

配置項一

9434708-2d4d070ded23fa0b.png
WX20180119-163732@2x.png

配置項二

9434708-57cc35835c2106d1.png
WX20180119-163751@2x.png

9434708-354975455af08f79.png
WX20180119-163809@2x.png

相關文章