1. 程式人生 > >三、springboot熱部署

三、springboot熱部署

gist 類加載 chang restart span artifact spro 指定 load

1.spring-boot-devtools 實現熱部署

spring-boot-devtools 最重要的功能就是熱部署。它會監聽 classpath 下的文件變動,並且會立即重啟應用。

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

  optional=true

表示依賴不會傳遞,換句話說,其他依賴該項目的項目,如果想要使用 devtools,需要重新引入

  如果,希望指定文件夾下的文件改變的時候,重新啟動 Spring Boot,我們只要在 src/main/resources/application.properties 中配置信息。

spring.devtools.restart.additional-paths= # Additional paths to watch for changes.

自定義配置熱部署

  以下配置用於自定義配置熱部署,可以不設置。

# 熱部署開關,false即不啟用熱部署
spring.devtools.restart.enabled: true

# 指定熱部署的目錄
#spring.devtools.restart.additional-paths: src/main/java

# 指定目錄不更新
spring.devtools.restart.exclude: test/**

如果是Intellij Idea,需要改以下兩個地方:

1、勾上自動編譯或者手動重新編譯

File > Settings > Compiler-Build Project automatically

2、註冊

ctrl + shift + alt + / > Registry > 勾選Compiler autoMake allow when app running

註意事項

1、生產環境devtools將被禁用,如java -jar方式或者自定義的類加載器等都會識別為生產環境。

2、打包應用默認不會包含devtools,除非你禁用SpringBoot Maven插件的 excludeDevtools

屬性。

3、Thymeleaf無需配置 spring.thymeleaf.cache:false,devtools默認會自動設置,參考完整屬性。

https://github.com/spring-projects/spring-boot/blob/v1.5.7.RELEASE/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/env/DevToolsPropertyDefaultsPostProcessor.java

4、devtools會在windows資源管理器占用java進程,在開發工具裏面殺不掉,只能手動kill掉,不然重啟會選成端口重復綁定報錯。

2.Spring Loaded 實現熱部署

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
            <version>1.2.6.RELEASE</version>
        </dependency>
    </dependencies>
</plugin>

使用 mvn spring-boot:run 啟動項目。

3.模板文件熱部署

在 Spring Boot,模板引擎的頁面默認是開啟緩存,如果修改頁面內容,刷新頁面是無法獲取修改後的頁面內容,所以,如果我們不需要模板引擎的緩存,可以進行關閉。

spring.freemarker.cache=false
spring.thymeleaf.cache=false
spring.velocity.cache=false

官方文檔:https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html

三、springboot熱部署