3,Spring Boot熱部署,springboot熱部署

來源:互聯網
上載者:User

3,Spring Boot熱部署,springboot熱部署

問題的提出:

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

一,使用方式一(不建議使用)-springloaded

1)在pom.xml檔案添加依賴包:

<build>    <plugins>        <!-- 在這裡添加springloader plugin-->        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin </artifactId>            <dependencies>                <!--springloaded hot deploy -->                <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>    </plugins></build>

2)點擊項目單擊右鍵Run as -->Maven build 在彈出的視窗中的Goals添加:spring-boot:run,點擊Run運行

3)瀏覽器訪問getDatePersion方法:

修改getDatePersion方法,訪問:

該方式在控制台結束後並不會釋放8080連接埠,再次啟動會報錯(8080連接埠被佔用):

二,使用方式二-springloaded

使用的run as – java application,需要做一些處理:

1,把spring-loader-1.2.4.RELEASE.jar下載下來,放到項目的lib(這個目錄不固定)目錄中

2,把IDEA的run參數裡VM參數設定為:-javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify 然後啟動就可以了,這樣在run as的時候,也能進行熱部署。選擇啟動類右鍵菜單Run As-->Run Configurattions…

3,弊端:

第二種方法結束後會自動釋放8080連接埠,但是我們在後台代碼新增加一個方法,在前台訪問是無法訪問到的。

三,第三種方式,使用Spring-Boot-devtoos實現熱部署(主要使用該方式)

1,簡介

spring-boot-devtools 是一個為開發人員服務的一個模組,其中最重要的功能就是自動應用代碼更改到最新的App上面去。原理是在發現代碼有更改之後,重新啟動應用,但是速度比手動停止後再啟動還要更快,更快指的不是節省出來的手工操作的時間。其深層原理是使用了兩個ClassLoader,一個Classloader載入那些不會改變的類(第三方Jar包),另一個ClassLoader載入會更改的類,稱為 restart ClassLoader,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新建立一個restart ClassLoader,由於需要載入的類相比較少,所以實現了較快的重啟時間(5秒以內)。

2,在pom.xml檔案中添加依賴包

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

3,在pom.xml檔案中添加spring-boot-maven-plugin

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

4,說明

1) devtools會監聽classpath下的檔案變動,並且會立即重啟應用(發生在儲存時機),注意:因為其採用的虛擬機器機制,該項重啟是很快的。

2)devtools可以實現頁面熱部署(即頁面修改後會立即生效,這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false來實現(這裡注意不同的模板配置不一樣)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.