springboot如何實現熱部署

進行springboot的web開發過程中,我們很多時候經常需要重啓web服務器才能保證修改的源代碼文件、或者諸如xml的配置文件、以及一些靜態文件生效,這樣耗時又低效。我們可以採用熱部署的方式解決此類問題。熱部署是指我們不需要重啓web server就可以保證各項文件修改的立即生效。

springboot有三種實現熱部署方式:

1. 使用springloaded配置pom.xml文件,使用mvn spring-boot:run啓動

2. 使用springloaded本地加載啓動,配置jvm參數

-javaagent:<jar包地址> -noverify

3. 使用devtool工具包,操作簡單,但是每次需要重新部署

第一種

1. 原來的pom.xml文件中添加如下配置

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>springloaded</artifactId>
    <version>1.2.8.RELEASE</version>
</dependency>

注意:需要在spring-boot-maven-plugin中添加dependency

2. 啓動方式變爲maven啓動

在項目文件夾dos窗口輸入命令:mvn spring-boot:run

注意:停止服務只能使用ctrl+c,如果設置後臺啓動,需要kill進程

第二種

1. 第二種和第一種採用的同樣方式,不過需要將spring-loaded下載下來,

將下面這局代碼放到VM arguments中,如圖:

-javaagent:D:\maven_jar\springloaded-1.2.8.RELEASE.jar -noverify

注意:紅色字爲你的jar包所在位置

解釋: -javaagent:命令後面跟冒號,意爲是在執行main方法之前執行特定代碼

            -noverify關閉java字節碼校驗功能

 然後直接run啓動就行了。

第三種

1. 在pom.xml中添加一個熱部署依賴,

<!-- 熱部署 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
</dependency>

啓動項目即可。

小結:

       在開發測試環境下可取第三種,方便快捷。

      在生產環境下,建議使用第二種,使用腳本啓動。

springboot實現熱部署的原理:

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

如有不足,歡迎留言指正,望不吝賜教。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章