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

SpringBoot+devtools實現(xiàn)熱部署的示例代碼

 更新時間:2024年08月12日 08:43:34   作者:星辰大海的精靈  
在軟件項目的開發(fā)過程中,不可避免的會經(jīng)常修改代碼,每次修改代碼,都需要手動停止然后再啟動服務,最后驗證代碼的正確性,今天通過這篇文章,我們一起來學習一下如何使用Spring?Boot?+?devtools?輕松搞定熱部署,需要的朋友可以參考下

01、背景介紹

在軟件項目的開發(fā)過程中,不可避免的會經(jīng)常修改代碼,每次修改代碼,都需要手動停止然后再啟動服務,最后驗證代碼的正確性。即使一個簡單的靜態(tài)資源文件的修改,也需要重啟,整個過程其實非常耗時。

Spring 團隊也注意到了這一點,為了加快項目的重啟速度,Spring Boot 提供了一個開發(fā)者工具,它可以監(jiān)控 classpath 路徑上的文件,只要源碼或者配置文件修改,Spring Boot 應用可以自動重啟,更改后的代碼自動生效,無需人工干預。

可以說,在開發(fā)階段,這個功能非常實用。

今天通過這篇文章,我們一起來學習一下如何在 Spring Boot 中使用開發(fā)者工具。

02、啟用開發(fā)者工具

下面,我們以Thymeleaf頁面模板引擎為例,簡單介紹靜態(tài)資源文件和源代碼的修改,Spring Boot 實現(xiàn)應用自動重啟的方式。

2.1、添加相關依賴包

要使用開發(fā)者工具,首先需要在pom.xml中添加如下依賴包。

<!-- devtools熱部署依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- 防止將依賴傳遞到其他模塊中 -->
    <optional>true</optional>
</dependency>1.2.3.4.5.6.7.

2.2、添加相關配置參數(shù)

當項目添加devtools工具包之后,Spring Boot devtools 默認已經(jīng)幫我們開啟了應用自動重啟特性,也開啟禁止靜態(tài)資源在瀏覽器緩存的屬性,同時排除了特定的資源文件被修改時自動重啟的操作。

例如,默認情況下,Spring Boot devtools 對如下的資源目錄文件變更,不會觸發(fā)自動重啟。

META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties1.

這些目錄通常用于存放靜態(tài)資源,由于 spring-boot-devtools 工具默認開啟了禁用緩存的操作,當文件發(fā)生修改時可以實時更新,無需重啟應用。

當然,我們也可以在application.properties全局文件中指定配置,比如只排除/static、/public和/templates 目錄中的文件修改重啟操作,額外監(jiān)控src/main/java目錄下的文件修改時自動重啟應用。

示例如下:

# 開啟熱部署(更改文件后,自動重啟)
spring.devtools.restart.enabled=true
# 設置哪些資源變動后不觸發(fā)自動重啟,會覆蓋默認的exclude內容(資源不會觸發(fā)重啟,但會觸發(fā)實時重新加載)
spring.devtools.restart.exclude=static/**,public/**,templates/**
# 設置需要監(jiān)控額外的路徑,當內容發(fā)生變化會出發(fā)自動重啟(優(yōu)先于exclude)
spring.devtools.restart.additional-paths=src/main/java1.2.3.4.5.6.

2.3、IDEA 配置

完成以上的配置之后,當修改代碼時,可能服務還是無法實現(xiàn)自動重啟的效果。

如果你采用的是 IDEA 開發(fā)工具,此時還需要配合 IDEA 相關設置,開啟運行時編譯。

實現(xiàn)步驟如下!

2.3.1、設置1

在File->Setting->Build,Execution,Deployment->Compile操作路徑下,勾選Make project automatically。

2.3.2、設置2

同時按住ctrl+alt+shift+/,選擇Registry,找到compiler.automake.allow.when.app.running配置,并將其勾選上。

2.4、開啟 fork 配置(選)

通過以上的設置之后,如果熱部署服務依然不能生效,可以在spring-boot-maven-plugin插件中,增加true參數(shù)配置,明確啟用熱部署功能。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <!-- 啟用熱部署功能(如果devtools不生效) -->
                <fork>true</fork>
            </configuration>
        </plugin>
    </plugins>
</build>1.2.3.4.5.6.7.8.9.10.11.12.

大部分情況下,經(jīng)過實測,沒有這個配置也可以實現(xiàn)自動重啟服務,具體以實際情況而定。

2.5、觀察熱部署效果

完成以上的操作之后,下面我們編寫一個用例,驗證一下服務自動重啟效果。

首先,在templates目錄下創(chuàng)建一個index.html靜態(tài)頁面,內容如

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p th:text="${content}">內容替換</p>
</body>
</html>1.2.3.4.5.6.7.8.9.10.

接著,創(chuàng)建一個視圖接口,內容如下:

@Controller
public class HelloController {

    @GetMapping("/")
    public String index(ModelMap map) {
        // 綁定元素
        map.addAttribute("content", "Hello World");
        return "index";
    }
}1.2.3.4.5.6.7.8.9.10.

最后,啟動服務,在瀏覽器中訪問http://localhost:8080/。

修改接口返回的數(shù)據(jù)為Hello World gogo,服務會自動重啟,重新訪問頁面后的效果。

在index.html靜態(tài)頁面中增加

修改靜態(tài)頁面代碼

,此時服務不會自動重啟,重新訪問頁面后的效果。

03、關閉開發(fā)者工具

devtools 只適用于開發(fā)環(huán)境,線上環(huán)境不可開啟。在上生產(chǎn)的時候,我們希望將其關閉,如何處理呢?

最簡單粗暴的方法,就是將其引用排除,可以根治很多問題!

當然也有另一種辦法,可以在application.properties配置文件中禁止自動重啟服務,比如添加如下參數(shù)配置。

spring.devtools.restart.enabled=false1.

也可以在啟動命令中增加-Dspring.devtools.restart.enabled=false參數(shù)來進行關閉。

自動重啟將不再被觸發(fā),但是仍將使用自動重啟類加載器。如果你想完全禁用類加載器,可以在啟動應用程序之前強制設置,示例如下。

public static void main(String[] args) {
    System.setProperty("spring.devtools.restart.enabled", "false");
    SpringApplication.run(Application.class, args);
}1.2.3.4.

04、小結

最后總結一下,采用 Spring Boot devtools 開發(fā)者工具,當修改代碼時,無需手動重啟服務,即可實現(xiàn)代碼實時更新,并且應用自動重啟速度也很快,對于開發(fā)者非常友好。

之所以能實現(xiàn)這樣的效果,Spring Boot devtools 使用了兩個類加載來處理自動重啟的問題。

對于不會變化的類,例如 Spring 本身的引用包和第三方引用的 jar 包,使用一個 base classloader 加載器來加載;對于正在開發(fā)中的類,則使用 restart classloader 加載器來進行加載。

同時,后臺啟動一個文件監(jiān)聽線程(File Watcher),監(jiān)測目錄中的類發(fā)生變動時,原來的 restart ClassLoader 將被丟棄,并產(chǎn)生一個新的 restart ClassLoader 來進行加載。因此,這種模式下自動重啟會比冷啟動快一些,因為 base classloader 已經(jīng)準備好了無需重啟。

以上就是SpringBoot+devtools實現(xiàn)熱部署的示例代碼的詳細內容,更多關于SpringBoot devtools熱部署的資料請關注腳本之家其它相關文章!

相關文章

  • Mysql在Spring Boot項目中的完整配置教程

    Mysql在Spring Boot項目中的完整配置教程

    本文詳細介紹了在Spring Boot項目中配置Mysql數(shù)據(jù)庫的各個方面,包括基礎配置、高級配置、JPA/Hibernate配置、事務管理、性能優(yōu)化、安全配置以及故障排除,同時,提供了常用配置參數(shù)的說明和連接池的選擇建議,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • Java編程guava RateLimiter實例解析

    Java編程guava RateLimiter實例解析

    這篇文章主要介紹了Java編程guava RateLimiter實例解析,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • JAVA函數(shù)的定義、使用方法實例分析

    JAVA函數(shù)的定義、使用方法實例分析

    這篇文章主要介紹了JAVA函數(shù)的定義、使用方法,結合實例形式分析了JAVA函數(shù)的基本概念、功能、原理、定義、使用方法與操作注意事項,需要的朋友可以參考下
    2020-04-04
  • Java如何找出數(shù)組中重復的數(shù)字

    Java如何找出數(shù)組中重復的數(shù)字

    這篇文章主要為大家詳細介紹了Java如何找出數(shù)組中重復的數(shù)字,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 解決Error occurred during initialization of VM Java虛擬機初始化失敗問題

    解決Error occurred during initialization o

    這篇文章主要介紹了解決Error occurred during initialization of VM Java虛擬機初始化失敗問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Spring?IOC容器Bean管理XML注入集合類型屬性

    Spring?IOC容器Bean管理XML注入集合類型屬性

    這篇文章主要為大家介紹了Spring?IOC容器Bean管理XML注入集合類型屬性,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • java?String到底有多長?String超出長度該如何解決

    java?String到底有多長?String超出長度該如何解決

    在Java中,由于字符串常量池的存在,String常量長度限制取決于String常量在常量池中的存儲大小,下面這篇文章主要給大家介紹了關于java?String到底有多長?String超出長度該如何解決的相關資料,需要的朋友可以參考下
    2023-01-01
  • SpringBoot Application注解原理及代碼詳解

    SpringBoot Application注解原理及代碼詳解

    這篇文章主要介紹了SpringBoot Application注解原理及代碼詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Java中報錯org.springframework.jdbc.UncategorizedSQLException的多種解決方法

    Java中報錯org.springframework.jdbc.UncategorizedSQLException的多種

    本文主要介紹了Java中報錯org.springframework.jdbc.UncategorizedSQLException的多種解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 淺談SpringMVC國際化支持

    淺談SpringMVC國際化支持

    這篇文章主要介紹了淺談SpringMVC國際化支持,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03

最新評論

四川省| 比如县| 独山县| 景德镇市| 岳阳市| 永新县| 通许县| 调兵山市| 乌兰察布市| 章丘市| 微山县| 锡林郭勒盟| 凌云县| 肇源县| 尼木县| 柳林县| 北碚区| 旬邑县| 赞皇县| 北宁市| 福州市| 汝城县| 海淀区| 新余市| 九江县| 云和县| 万山特区| 翁牛特旗| 齐齐哈尔市| 新蔡县| 洪江市| 藁城市| 长顺县| 古田县| 大名县| 工布江达县| 新密市| 龙口市| 邮箱| 泾川县| 昭平县|