why?
目前的Springboot,當發生了任何修改之後,必須關閉後再啓動Application類才能夠生效,顯得略微麻煩。
what?
簡述
spring爲開發者提供了一個名爲spring-boot-devtools的模塊來使Spring Boot應用支持熱部署,提高開發者的開發效率,無需手動重啓Spring Boot應用。
devtools的原理
- 使用了兩個ClassLoader,
- 一個Classloader加載那些不會改變的類(第三方Jar包),
- 另一個ClassLoader加載會更改的類,稱爲restart ClassLoader,
- 這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新創建一個restart ClassLoader,由於需要加載的類相比較少,所以實現了較快的重啓時間。
how?
1. 添加依賴的jar包
<!-- 熱部署的相關依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 這個需要爲 true 熱部署纔有效 -->
</dependency>
確保有這個插件:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
2. 修改配置文件
文件路徑:src/main/resources/application.properties
添加的配置:
# jsp映射相關
spring.mvc.view.prefix=/WEB-INF/
spring.mvc.view.suffix=.jsp
#熱部署生效
spring.devtools.restart.enabled=true
#設置重啓的目錄
spring.devtools.restart.additional-paths=src/main/java
# classpath 目錄下的WEB-INF文件夾修改不重啓
spring.devtools.restart.exclude=WEB-INF/**
# 實現頁面文件的熱部署
spring.thymeleaf.cache=false
3. 修改idea設置
第一步 File -> settings :
第二步:在idea界面的右上角有放大鏡的搜索功能,搜索 Registry:
result?
重啓後
修改java文件保存後:項目自動重啓(重啓部分內容)
修改頁面文件後,刷新瀏覽器:顯示修改後的內容
修改配置文件:項目自動重啓