spring的熱部署

https://docs.spring.io/spring-boot/docs/2.2.0.BUILD-SNAPSHOT/reference/html/using-spring-boot.html#using-boot-structuring-your-code

spring boot開發過程中,經常需要調試接口,修改代碼之後需要重啓使之成效,比較耗時; spring boot提供了熱部署的方式;

原理:spring boot使用兩個classloader:不改變的類(如第三方jar)由base類加載器加載,正在開發的類由restart類加載器加載。應用重啓時,restart類加載器被扔掉重建,而基類加載器不變,這種方法意味着應用程序重新啓動通常比“冷啓動”快得多,因爲基類加載器已經可用並已填充。當我們開啓devtools後,類路徑中的文件變化會導致應用自動重啓;

其深層原理是使用了兩個類加載器,一個類加載器加載那些不會改變的類(第三方的罐包),另外一個類加載器加載會更改的類,稱爲重啓類加載器。

這樣在有代碼更改的時候,原來的重啓類加載器被丟棄,重新創建一個重啓類加載器,由於需要加載的類相比較少,所以實現了更快的重啓時間(5秒左右)

引用依賴和插件


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>2.0.3.RELEASE</version>
</dependency>


<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- fork:如果沒有該配置,這個devtools不會起作用,即應用不會restart -->
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

spring-boot-devtools在遠程應用程序上 啓用存在安全風險。您永遠不應該在生產部署上啓用支持。

修改IDEA的操作參考以下的博客:

HTTPS//www.jianshu.com/p/0dbb37349718

https://www.jianshu.com/p/8f3fea44e548

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