SpringBoot熱部署配置(基於Maven)


熱部署的意思是只要類中的代碼被修改了,就能實時生效,而不用重啟項目。spring-boot-devtools 是一個為開發者服務的一個模塊,其中最重要的功能就是自動應用代碼更改到最新的App上面去。原理是在發現代碼有更改之后,重新啟動應用,但是比速度比手動停止后再啟動還要更快,更快指的不是節省出來的手工操作的時間。

其深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱為 restart ClassLoader
,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新創建一個restart ClassLoader,由於需要加載的類相比較少,所以實現了較快的重啟時間(5秒以內)。

 

下面基於maven實現SpringBoot的熱部署解決方案:

(1)在pom.xml文件中引入 spring-boot-devtools 依賴

<!-- SpringBoot 熱部署 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- 不傳遞依賴 -->
    <optional>true</optional>
</dependency>

(2)開啟IntelliJ IDEA的自動編譯(這里使用的IDEA版本是14.1.7)

(3)打開命令行窗口,使用"mvn spring-boot:run"命令的方式來啟動SpringBoot項目(經測試,如果通過直接運行SpringBoot的Main方法來啟動項目的話,devtools是不會生效的):

 

配置完畢,只要java類中的代碼被修改了,通過控制台上的日志信息可以看到項目會自動重啟,以使修改的文件實時生效。

如果不想使用熱部署了,可以通過配置來關閉熱部署,比如:

package com.xuebusi.springboot.maven;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 啟動類
 * Created by xuebusi.com on 2017/4/13.
 */
@SpringBootApplication
public class MavenApplication {

    public static void main(String[] args) {
        //熱部署開關:true表示開啟,false表示關閉
        System.setProperty("spring.devtools.restart.enabled","false");
        SpringApplication.run(MavenApplication.class, args);
    }
}

上面是在main方法中傳遞配置參數,當然也可以把spring.devtools.restart.enabled屬性配置在項目的properties配置文件或者yml配置文件中,比如:

 

參考的文章:

http://412887952-qq-com.iteye.com/blog/2300313

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM