<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ![](https://cdn.zimug.com/wx-zimug.png) 在實際的開發過程中,我們經常修改代碼之后,手動的重啟項目,手動刷新瀏覽器查看修改效果。那么有沒有一種方式能夠快速的、自動的幫我們將修改代碼自動更新,避免手動重啟,從而提高開發效率呢?肯定是有的,但是對于這個功能很多人對功能的叫法有爭議,筆者查詢了維基百科、官方文檔,沒有得到合理的答案,也沒有權威的定義,筆者知道的就有:熱啟動、熱加載、熱更新、熱部署、熱切換。這幾個詞從語義上是有區別的,但是叫什么并不重要,實現了最重要,畢竟絕大部分程序員為了使用這個功能方便開發,也不是專業的搞學術研究的。 > 如果哪位朋友獲得了權威渠道的說法,可以將文檔連接反饋給我。我再理解一下,爭取做到學術研究級別的一絲不茍!在此之前筆者按照自己的想法和英文翻譯的角度去使用這些名詞。 ## 一、使用Jrebel插件 這是最簡單的一種方式,但是有一定的個局限性,Jrebel插件是收費的。雖然有破解方案,但是不建議!有需要的同學自行研究,這里就不多做介紹了。 > Jrebel插件在有些Spring Boot版本不夠兼容,會報錯,越新的版本越容易報錯。所以筆者目前還是選擇性放棄使用該方法! 第一步:安裝插件,按照箭頭所示選擇安裝。安裝完成之后,要重啟IDEA才能生效。 ![](https://img.kancloud.cn/b5/86/b5862bc7e81a1d84ea614bf8763feb72_1533x885.png) 第二步:激活。在安裝完成之后,右上角會多出這樣幾個按鈕。點擊之后會提示你進行插件激活,可以注冊碼激活,也可以在線激活。也可以填寫個人姓名、郵箱、電話之后獲取10天的試用! ![](https://img.kancloud.cn/eb/46/eb46dbc880b3b57d634b8a82dfdc65dc_623x225.png) 第三步:更新操作觸發配置,這個配置不僅結合Jrebel使用有效,對于其他的方式實現開發過程中需要自動更新的情況下,也要勾選上。 ![](https://img.kancloud.cn/b6/39/b63998ed48839cf7e05346dcc4e15385_497x277.png) 在Spring Boot項目啟動配置中,選擇下圖中的紅色框中的內容:uodate classes and resources on ‘update’ action ![](https://img.kancloud.cn/c1/fd/c1fd71a6e07c941652d4fc3e9b7304b6_1429x863.png) 配置完成后,通過右上角的JR按鈕啟動SpringBoot項目。就可以實現改動代碼和資源的自動更新。 ## 二、 devtools實現熱加載 這是一種對于SpringBoot而言比較常見的一種實現方式。 ### 1.1.引入devtools的maven依賴 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> ``` spring-boot-devtools從名稱就可以看出來,是開發者工具包,其主要的功能就是實現熱加載。 ![](https://img.kancloud.cn/38/a0/38a0bd94ef6dea1c12046e0f51a16c31_1069x412.png) 其實現原理就是兩個ClassLoader,一個負責加載那些不會經常改變的文件,比如:第三方jar包,一旦引入項目之后這部分代碼在調試過程中就處于不變的狀態;一個負責加載可能經常改變的類,比如我們自己在項目中寫的代碼,被稱為restart ClassLoader。當有代碼發生改變的時候,重建一個restart ClassLoader,原有的restart ClassLoader被丟掉。由于每次重新加載的內容較少,所以速度比手動重啟更快一些。 ### 1.2.設置IDEA * 首先,運行時編譯配置:組合鍵:“Shift+Ctrl+Alt+/” ,選擇 “Registry” ,選中打勾 “compiler.automake.allow.when.app.running” 。 ![](https://box.kancloud.cn/974e40a4165195960c5a4a888cbb78e3_1069x322.png) * 其次,自動化編譯配置: “File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,選中打勾 “Make project automatically” 。這是一種重新自動化的編譯整體項目的方法。但是筆者一般不這么做,因為IDEA的文件是自動保存的,你想修改一個字符串,有可能你只修改完成第一個字符它就重新編譯了,重新加載啟動。所以,**筆者一般代碼修改完成之后,使用Ctrl + F9快捷鍵對修改類重新編譯,而不是做項目的自動化編譯**。 ![](https://img.kancloud.cn/54/b4/54b4462c8b4a3314e4eeb557862e7837_716x424.png) * 最后,在一些相對舊的IDEA版本上運行時配置,按如下圖形勾選。(新版本IDEA已經不需要了) ![](https://img.kancloud.cn/aa/50/aa50626eecc8c3aebe857f21ad53df2d_688x482.png) ### 1.3 修改一下application.properties配置 在比較新的Spring Boot devtools版本中我們已經不需要做如下的配置了,但是如果你以上的步驟都完成了,仍然無法實現代碼更改之后的熱加載,請參考下面的方法。在有些版本我們需要配置熱加載生效的開關,使其值等于true。 下文是properties格式配置,喜歡yml格式的同學可以自行調整一下。默認情況下,支持熱加載的目錄如下,如果需要其它目錄下文件支持熱加載需要手動配置: 1. `/META-INF/maven` 2. `/META-INF/resources` 3. `/resources` 4. `/static` 5. `/public` 6. `/templates` ``` #熱加載生效 spring.devtools.restart.enabled=true #額外新增的熱加載目錄 spring.devtools.restart.additional-paths= src/main/java #熱加載排除目錄 #spring.devtools.restart.exclude= ``` ### 1.4.LiveReload插件 最后建議你去chrome 瀏覽器插件商店安裝一個插件叫做LiveReload。 ![](https://img.kancloud.cn/bd/91/bd91e4e886709035cba31d16978657c3_2405x798.gif) Spring devtools默認會啟動一個 Live Reload Server實例,監聽文件的變化。并實時的與瀏覽器插件通信,更新瀏覽器展示界面。這樣,你就不用每次更改內容之后都點擊瀏覽器刷新按鈕了。 ### 1.5.最后測試一下 改一下代碼,看看會不會生效。通常不生效的原因有兩種: * JDK編譯版本和運行版本不統一,自行學習一下IDEA環境下JDK配置 * 瀏覽器緩存或者其他的緩存軟件導致的問題
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看