三、springboot熱部署
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
如果,希望指定文件夾下的文件改變的時候,重新啟動 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熱部署