springboot實現熱部署
阿新 • • 發佈:2020-09-11
原理
深層原理是使用了兩個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 #頁面不載入快取,修改即時生效