SpringBoot(二)——熱部署(springloader)

SpringBoot(二)——熱部署(springloader)

一、問題的提出:

  在編寫代碼的時候,有時只是簡單把打印信息改變了,就需要重新部署SpringBoot項目,如果是這樣的編碼方式,那麼我們估計一天下來就真的是打幾個Hello World就下班了。那麼如何解決熱部署的問題呢?那就是springloaded

二、原理

  spring-boot-devtools 是一個爲開發者服務的一個模塊,其中最重要的功能就是自動應用代碼更改到最新的App上面去。原理是在發現代碼有更改之後,重新啓動應用,但是速度比手動停止後再啓動還要更快,更快指的不是節省出來的手工操作的時間。

三、深層原理

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

四、開發步驟(在上一個例子的基礎上實驗)

  
1、在pom.xml中添加依賴包

<build>
        <plugins>
            <!-- 在這裏添加springloader plugin-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin </artifactId>
                <dependencies>  
                   <dependency>  
                       <groupId>org.springframework</groupId>  
                       <artifactId>springloaded</artifactId>  
                       <version>1.2.4.RELEASE</version>
                   </dependency>  
                </dependencies>  
                <executions>  
                   <execution>  
                       <goals>  
                           <goal>repackage</goal>  
                       </goals>  
                       <configuration>  
                           <classifier>exec</classifier>  
                       </configuration>  
                   </execution>  
                </executions>
            </plugin>

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

        </plugins>

    </build>

2、在運行程序是選擇以下方式:

選中項目,鼠標右鍵——>run as——>Maven Build——>

SpringBoot(二)——熱部署(springloader)

在Goals 中填寫spring-boot:run——>Run

五、測試

1、在瀏覽器中輸入http://localhost:8089/hello

SpringBoot(二)——熱部署(springloader)

2、修改HelloController,修改返回值:
將 return "Hello World" 改爲: "Hello World !!!!!!!!!!!!!",並按Ctrl+S保存

3、接着再在瀏覽器去刷新剛剛的頁面

SpringBoot(二)——熱部署(springloader)

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