1. 程式人生 > 實用技巧 >springboot實現熱部署

springboot實現熱部署

原理

深層原理是使用了兩個ClassLoader,一個Classloader載入那些不會改變的類(第三方Jar包),另一個ClassLoader載入會更改的類,稱為restart ClassLoader,這樣在有程式碼更改的時候,原來的restart ClassLoader 被丟棄,重新建立一個restart ClassLoader,由於需要載入的類相比較少,所以實現了較快的重啟時間。

使用

我們這裡採用devtools的方式實現熱部署,首先在pom.xml中新增依賴

        <!--devtools熱部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>runtime</scope>
        </dependency>
  • 這裡<scope></scope>標籤中需要設定成runtime。如果設定成true會對整個專案進行重啟。而不是熱部署
  • devtools可以實現頁面熱部署(即頁面修改後會立即生效,這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false來實現)。即devtools會監聽classpath下的檔案變動,並且會立即重啟應用(發生在儲存時機)。

配置

在application.yml中配置一下devtools

spring:
  devtools:
    restart:
      enabled: true  #設定開啟熱部署
      additional-paths: src/main/java #重啟目錄
      exclude: WEB-INF/**
  freemarker:
    cache: false    #頁面不載入快取,修改即時生效