亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么部署Spring-Boot-Devtools

發布時間:2021-10-28 11:01:15 來源:億速云 閱讀:152 作者:iii 欄目:web開發

這篇文章主要介紹“怎么部署Spring-Boot-Devtools”,在日常操作中,相信很多人在怎么部署Spring-Boot-Devtools問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么部署Spring-Boot-Devtools”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

spring-boot-devtools

SpringBoot,StringBuilder,StringBuffer,俗稱Java界的3個SB。尤其是SpringBoot,非常的好用,主要歸功于它的autoconfig,靠約定來規范開發。

但問題是,SpringBoot加載的Jar包太多、太大了,每次啟動都要花費很長時間。對于SpringBoot服務來說,spring-boot-devtools就像一陣及時雨,滋潤著瞪眼發呆盯著重啟屏幕的同學。

雖然這個東西已經出來很長時間了,但我發現在現實項目中,大家用到的還是比較少。但它的使用非常簡單。

只需要在項目的pom文件中,加入下面的jar包即可獲取秒級的服務重載(熱部署)。

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

由于starter文件中默認的值就是true,所以下面yml中的配置,并不是必須的。

spring:   devtools:     restart:       enabled: true

我們來驗證一下。來的很快。

新建一個簡單的controller,輸出halloworld。

@Controller public class DemoController {     @GetMapping("/test")     @ResponseBody     public String test(){         return "halloworld";     } }

修改代碼,把hallo改成hello。控制臺中將開始滾動輸出日志,加載項目代碼。此時訪問瀏覽器,發現我們的改動生效了。

# 日志顯示 Started MbyeApplication in 1.731 seconds (JVM running for 51.115)

控制臺也輸出了本次restart的時間,只花了不到2秒鐘,可以說是飛快了。

為了在代碼修改后,能夠實時的觸發編譯,你需要在IDEA中做如下配置。如果這個配置不生效,就需要手動點擊一下Build了(注意不是rebuild)。

怎么部署Spring-Boot-Devtools

為什么熱部署的重新加載能夠這么快呢?因為它的重新啟動并不是完整的重啟整個應用,而是只重啟我們的應用代碼。

通過配置META-INF/spring-devtools.properties文件,可以指定每次重新啟動都加載第三方jar包。不過這種場景比較少。當然,有include,舊有exclude,示例如下。

restart.exclude.somejar=/somejar-[\\w-]+\.jar restart.include.ajar=/ajar-[\\w-]+\.jar

注意到一件有意思的事情。當我們使用IDEA啟動的時候,控制臺的輸出是這樣的。

2020-09-18 21:33:59.495  INFO 4635 --- [  restartedMain] c.g.javarunfast.mbye.MbyeApplication     : Starting MbyeApplication on LYCYs-MacBook-Pro.local with PID 4635 (/target/classes started by xjjdog in /Users/xjjdog/codes/javarunfast/mbye) 2020-09-18 21:33:59.495  INFO 4635 --- [  restartedMain] c.g.javarunfast.mbye.MbyeApplication     : No active profile set, falling back to default profiles: default 2020-09-18 21:34:00.355  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! 2020-09-18 21:34:00.355  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Elasticsearch repositories in DEFAULT mode. 2020-09-18 21:34:00.357  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1ms. Found 0 Elasticsearch repository interfaces. 2020-09-18 21:34:00.362  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode! 2020-09-18 21:34:00.362  INFO 4635 --- [  restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Reactive Elasticsearch repositories in DEFAULT mode.

里面的啟動線程是restartedMain。但當我們使用java -jar  *jar來啟動的時候,主進程并不是restartedMain,而是main。

這是因為,線上環境開啟devtools,是沒有意義的。

這句話暫時這么說,因為會打臉。

更多功能

要想了解devtools有什么功能,我們先來看一下它的源碼目錄結構。

怎么部署Spring-Boot-Devtools

filewatch和classpath就不必說了,通過監聽文件的變化,即可實現熱啟動。它原理上是使用一個獨立的ClassLoader(具體是指RestartClassLoader),來完成加載后的替換。

學習一下這部分的代碼,可以對Java的類加載器有更好的理解。

LiveReload

接下來就是livereload功能。

LiveReload在做前端開發的時候,經常會用到。

devtools也會在后臺開啟一個LiveReload  Server,瀏覽器會與這個Server保持著一個長連接,當后端有前端資源變動的時候,將會通知瀏覽器進行刷新,實現熱部署。

下面是Chrome的Remote Live Reload插件地址。安裝即可擁有這個酷炫的功能。

https://chrome.google.com/webstore/detail/remotelivereload/jlppknnillhjgiengoigajegdpieppei?hl=en-GB

怎么部署Spring-Boot-Devtools

遠程部署

這個就有意思多了。我們上面說到,線上環境開啟devtools,是沒有意義的,現在來打臉。

你可能自己的機器性能比較低,讓代碼運行在遠端,本地只管代碼開發。這時候,就可以使用遠程熱部署。

要開啟這個功能,需要做的步驟有點多。

步驟一。

需要在pom.xml中對spring-boot-maven-plugin做如下的更改。

<plugin>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-maven-plugin</artifactId>     <configuration>         <excludeDevtools>false</excludeDevtools>     </configuration> </plugin>

步驟二。

在yml中設置一個服務端與調試端連接的密鑰。

spring:   devtools:     remote:       secret: test

步驟三。

將SB服務打包成jar,然后啟動。

mvn -Dmaven.test.skip=true -Pdev package  java -jar -Xdebug  \ -Xrunjdwp:server=y,transport=dt_socket,suspend=n  \ mbye-0.0.1-SNAPSHOT.jar

可以看到我們在啟動的時候加入了很多參數,這就是開啟遠程被調戲的意思。

步驟四。

在本地IDEA中編輯一個Java文件,并在啟動變量里塞進我們的服務端地址(和應用地址一樣)。

import org.springframework.boot.devtools.RemoteSpringApplication;  /**  * @date 2020/09/19  */ public class Remote {     public static void main(String[] args) {         RemoteSpringApplication.main(new String[]{"http://localhost:8080"});     } }

步驟五。

進行驗證。隨便編輯一個能看到效果的文件,然后點擊build。

下面是IDEA開發端的截圖。

怎么部署Spring-Boot-Devtools

下面是服務端截圖。可以看到服務已經重新載入了,不過速度特別快。

怎么部署Spring-Boot-Devtools

Listening for remote restart updates on /.~~spring-boot!~/restart Started MbyeApplication in 1.961 seconds (JVM running for 249.452)

訪問web頁面,發現代碼已經上傳成功了。

其實,spring-boot-devtools,還不算是最強大的。因為它每次都會使用ClassLoader重新載入項目的class文件。如果你的項目文件特別多,那也是比較慢的。

到此,關于“怎么部署Spring-Boot-Devtools”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節
推薦閱讀:
  1. sybase部署
  2. Django部署

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潼南县| 张掖市| 连江县| 咸宁市| 丹寨县| 民县| 清徐县| 宁武县| 伽师县| 仁寿县| 竹溪县| 二连浩特市| 北票市| 榕江县| 宝坻区| 聊城市| 凤翔县| 绥中县| 辽宁省| 余姚市| 南靖县| 景德镇市| 利辛县| 巴塘县| 青川县| 达日县| 通海县| 疏勒县| 泸溪县| 安龙县| 竹溪县| 福州市| 外汇| 思茅市| 南城县| 杭州市| 安西县| 武城县| 墨玉县| 东山县| 长宁县|