最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于SpringBoot的熱部署方案

 更新時(shí)間:2023年05月19日 10:36:25   作者:IT利刃出鞘  
這篇文章主要介紹了關(guān)于SpringBoot的熱部署方案,每次修改代碼就得將項(xiàng)目重啟,重新部署,對(duì)于一些大型應(yīng)用來說,重啟時(shí)間需要花費(fèi)大量的時(shí)間成本,本文就來詳解熱部署方案,需要的朋友可以參考下

簡(jiǎn)介

說明

本文介紹SpringBoot的熱部署方案。

熱部署概述

每次修改代碼就得將項(xiàng)目重啟,重新部署,對(duì)于一些大型應(yīng)用來說,重啟時(shí)間需要花費(fèi)大量的時(shí)間成本。目前的 Java 虛擬機(jī)只能實(shí)現(xiàn)方法體的修改熱部署,對(duì)于整個(gè)類的結(jié)構(gòu)修改,仍然需要重啟虛擬機(jī),對(duì)類重新加載才能完成更新操作。

原理是使用了兩個(gè)ClassLoader,一個(gè)Classloader加載那些不會(huì)改變的類(第三方Jar包),另一個(gè)ClassLoader加載會(huì)更改的類,稱為restart ClassLoader。在有代碼更改的時(shí)候,原來的restart ClassLoader 被丟棄,重新創(chuàng)建一個(gè)restart ClassLoader,由于需要加載的類相比較少,所以實(shí)現(xiàn)了較快的重啟時(shí)間。

主要有以下幾種熱部署方式

  • spring-boot-devtools(適合開發(fā)環(huán)境)
  • springloaded(maven插件)配置pom.xml文件,使用mvn spring-boot:run啟動(dòng)
  • springloaded本地加載啟動(dòng),配置jvm參數(shù):-javaagent:<jar包地址> -noverify(適合生產(chǎn)環(huán)境)
  • JRebel(收費(fèi))

spring-boot-devtools

原理

(1) devtools可以實(shí)現(xiàn)這三種熱部署:頁面熱部署、類文件熱部署(類文件修改后不會(huì)立即生效),實(shí)現(xiàn)對(duì)屬性文件的熱部署。 devtools會(huì)監(jiān)聽classpath下的文件變動(dòng),并且會(huì)立即重啟應(yīng)用(發(fā)生在保存時(shí)機(jī)),注意:因?yàn)槠洳捎玫奶摂M機(jī)機(jī)制,該項(xiàng)重啟是很快的。

(2)在修改java文件后也就支持了熱啟動(dòng),不過這種方式是屬于項(xiàng)目重啟(速度比較快的項(xiàng)目重啟),會(huì)清空session中的值,也就是如果有用戶登陸的話,項(xiàng)目重啟后需要重新登陸。 默認(rèn)情況下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public這些文件夾下的文件修改不會(huì)使應(yīng)用重啟,但是會(huì)重新加載(devtools內(nèi)嵌了一個(gè)LiveReload server,當(dāng)資源發(fā)生改變時(shí),瀏覽器刷新)。

使用

1.pom.xml添加依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <version>2.0.4.RELEASE</version>
    <optional>true</optional> <!-- 這個(gè)需要為 true 熱部署才有效 -->
    <scope>true</scope>
</dependency>

2. pom.xml添加maven插件。(必須配置<fork>true</fork>)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
                <!--如果沒有這個(gè)屬性 springBoot 自動(dòng)配置不會(huì)生效-->
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>

3. 修改application.yml

spring:
  devtools:
    restart:
      enabled: true  #開啟熱部署
      additional-paths: src/main/java #重啟目錄
      exclude: WEB-INF/**
  freemarker:
    cache: false    #頁面不加載緩存,修改即時(shí)生效

application.properties配置spring.devtools.restart.enabled=false,此時(shí)restart類加載器還會(huì)初始化,但不會(huì)監(jiān)視文件更新。 在SprintApplication.run之前調(diào)用System.setProperty(“spring.devtools.restart.enabled”, “false”);可完全關(guān)閉重啟支持,

4. 設(shè)置Idea軟件

File=>Settings=> Builder,Execution,Deployment=> Compiler=> 選中“Build project automaticlly”

ctrl+shift+alt+/ =>選擇registry=>找到 compiler.automake.allow.when.app.running 并?

5.如果使用 Thymeleaf 模板引擎,需要把模板默認(rèn)緩存設(shè)置為 false

修改application.properties為false:

#禁止thymeleaf緩存(建議:開發(fā)環(huán)境設(shè)置為false,生產(chǎn)環(huán)境設(shè)置為true )
spring.thymeleaf.cache=false

測(cè)試

  • 修改類=>保存:應(yīng)用會(huì)重啟
  • 修改配置文件=>保存:應(yīng)用會(huì)重啟。例如:application.yml,log4j.yml。若想這些配置文件不熱部署,這樣做:spring.devtools.restart.exclude=application.properties
  • 修改頁面=>保存:應(yīng)用不會(huì)重啟,但會(huì)重新加載,頁面會(huì)刷新

Intellij IEDA和Eclipse不同,Eclipse設(shè)置了自動(dòng)編譯之后,修改類它會(huì)自動(dòng)編譯,而IDEA在非RUN或DEBUG情況下才會(huì)自動(dòng)編譯(前提是你已經(jīng)設(shè)置了Auto-Compile)。

修改多個(gè)文件的解決方法

如果你寫一個(gè)邏輯代碼,需要好幾個(gè)文件,總不能你每保存一次就進(jìn)行一次熱部署。解決方法:

在application.properties添加手工觸發(fā)重啟

#通過觸發(fā)器,去控制什么時(shí)候進(jìn)行熱加載部署新的文件
spring.devtools.restart.trigger-file=trigger.txt

在src\main\resources目錄下,添加trigger.txt文件

version=1

這樣你每次改好代碼,不會(huì)每次保存就熱部署,而是改好代碼后,改trigger.txt的內(nèi)容就會(huì)進(jìn)行熱部署。

springloaded(maven插件)

在 spring-boot-maven-plugin 插件配置中添加 springloaded 依賴

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <dependencies>
                <!-- 該依賴在此處下載不下來,可放在build標(biāo)簽外部下載完成后再粘貼進(jìn)plugin中 -->
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>springloaded</artifactId>
                    <version>1.2.5.RELEASE</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

配置Idea使用MVN運(yùn)行(也可以在項(xiàng)目所在路徑下打開dos,輸入mvn spring-boot:run,然后回車)

Run=> Edit Configurations=> 左上角“+”號(hào)=> 選擇MAVEN=> Name:為本命令命名; Working Directory:指定要運(yùn)行的項(xiàng)目路徑;Command line:spring-boot:run

IDEA項(xiàng)目運(yùn)行部位出現(xiàn)此配置,點(diǎn)擊綠色箭頭運(yùn)行即可

當(dāng)前springboot的端口無法關(guān)閉,必須打開任務(wù)管理器進(jìn)行對(duì)該進(jìn)程干掉)

以下無法熱部署:

對(duì)于一些第三方的注解修改不能自動(dòng)加載,比如spring mvc的@RequestMappingapplication.properties的修改也不行l(wèi)og4j的配置文件的修改不能即時(shí)生效

springloaded本地加載啟動(dòng)

1.下載springloaded:https://github.com/spring-projects/spring-loaded

2.Run=> Edit Configurations=>SpringBoot=> Application=> Configuration=> VM options=> 輸入:-javaagent:<jar包地址> -noverify 例如:

-javaagent:C:\Users\tengj\.m2\repository\org\springframework\springloaded\1.2.6.RELEASE\springloaded-1.2.6.RELEASE.jar -noverify

到此這篇關(guān)于關(guān)于SpringBoot的熱部署方案的文章就介紹到這了,更多相關(guān)SpringBoot熱部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot+redis實(shí)現(xiàn)微博熱搜排行榜的示例代碼

    springboot+redis實(shí)現(xiàn)微博熱搜排行榜的示例代碼

    本文主要介紹了springboot+redis實(shí)現(xiàn)微博熱搜排行榜的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java中BufferedReader與Scanner讀入的區(qū)別詳解

    Java中BufferedReader與Scanner讀入的區(qū)別詳解

    這篇文章主要介紹了Java中BufferedReader與Scanner讀入的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Java Pattern與Matcher字符串匹配案例詳解

    Java Pattern與Matcher字符串匹配案例詳解

    這篇文章主要介紹了Java Pattern與Matcher字符串匹配案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 談?wù)凧ava利用原始HttpURLConnection發(fā)送POST數(shù)據(jù)

    談?wù)凧ava利用原始HttpURLConnection發(fā)送POST數(shù)據(jù)

    這篇文章主要給大家介紹java利用原始httpUrlConnection發(fā)送post數(shù)據(jù),設(shè)計(jì)到httpUrlConnection類的相關(guān)知識(shí),感興趣的朋友跟著小編一起學(xué)習(xí)吧
    2015-10-10
  • Java中的Random和ThreadLocalRandom詳細(xì)解析

    Java中的Random和ThreadLocalRandom詳細(xì)解析

    這篇文章主要介紹了Java中的Random和ThreadLocalRandom詳細(xì)解析,Random 類用于生成偽隨機(jī)數(shù)的流, 該類使用48位種子,其使用線性同余公式進(jìn)行修改,需要的朋友可以參考下
    2024-01-01
  • 關(guān)于String.format使用詳解

    關(guān)于String.format使用詳解

    文章介紹了Java中String.format的使用,通過格式說明符實(shí)現(xiàn)簡(jiǎn)潔、可維護(hù)的字符串拼接,適用于日志生成、數(shù)據(jù)格式化、編號(hào)處理等場(chǎng)景,支持靈活的格式控制與null值處理,顯著提升代碼可讀性和靈活性
    2025-08-08
  • java中static的用法及注意點(diǎn)

    java中static的用法及注意點(diǎn)

    在本篇文章里小編給大家整理的是一篇關(guān)于java中static的用法及注意點(diǎn),有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • Spring Security注冊(cè)過濾器注意事項(xiàng)詳解

    Spring Security注冊(cè)過濾器注意事項(xiàng)詳解

    前兩天和小伙伴聊了 Spring Security+JWT 實(shí)現(xiàn)無狀態(tài)登錄,然后有小伙伴反饋了一個(gè)問題,感覺這是一個(gè)我們平時(shí)寫代碼容易忽略的問題,所以本文給大家介紹了Spring Security注冊(cè)過濾器注意事項(xiàng),需要的朋友可以參考下
    2024-06-06
  • VsCode配置java環(huán)境的詳細(xì)圖文教程

    VsCode配置java環(huán)境的詳細(xì)圖文教程

    vscode是一個(gè)免費(fèi)的代碼編輯器,支持多種主題,應(yīng)用起來簡(jiǎn)單方便,下面這篇文章主要給大家介紹了關(guān)于VsCode配置java環(huán)境的詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • IDEA如何查看代碼反匯編代碼

    IDEA如何查看代碼反匯編代碼

    這篇文章主要介紹了IDEA如何查看代碼反匯編代碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評(píng)論

台南市| 天水市| 乐业县| 怀宁县| 梅州市| 日照市| 常德市| 池州市| 嵩明县| 林州市| 于都县| 葫芦岛市| 富源县| 桂平市| 孝感市| 安丘市| 镇江市| 都安| 丹巴县| 奉化市| 鹤岗市| 渝中区| 久治县| 西充县| 武定县| 迁西县| 义乌市| 威远县| 会同县| 邵阳市| 天长市| 上饶市| 蚌埠市| 朝阳县| 临猗县| 收藏| 高安市| 紫金县| 无锡市| 北票市| 板桥市|