SpringBoot應用通常都載入很多Jar包,每次啟動都要花費很長時間。
Spring為開發者提供了一個名為spring-boot-devtools的模組來使Spring Boot應用支援熱部署,提高開發者的開發效率,無需手動重啟Spring Boot應用。
devtools的原理:
使用了兩個ClassLoader,一個Classloader載入那些不會改變的類(第三方Jar包),另一個ClassLoader載入會更改的類,稱為restart ClassLoader。這樣在有程式碼更改的時候,原來的restart ClassLoader 被丟棄,重新建立一個restart ClassLoader,由於需要載入的類相比較少,所以實現了較快的重啟。
它的使用非常簡單。只需要在專案的pom檔案中,加入下面的jar包即可獲取秒級的服務過載(熱部署)。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency>
下面的配置中spring.devtools.restart.enabled: true不是必須的,預設就會開啟。
# 熱部署配置spring: devtools: restart: # 啟用熱部署 enabled: true # 設定重啟的目錄 additional-paths: src/main/java # classpath目錄下的static目錄內容修改不重啟 exclude: classpath:static/**
以上配置即可。簡單吧
禁用重啟 1、在application配置檔案中設定
spring.devtools.restart.enabled=false 在大多數情況下,您可以將此屬性設定在application.properties。(這樣做仍然會初始化重啟類載入器,但它不需要注意。 檔案更改)。
2、如果您需要完全禁用重新啟動支援需要設定spring.devtools.restart.enabled系統屬性
並且在呼叫SpringApplication.run之前設定,如以下示例所示:
public static void main(String[] args) { System.setProperty("spring.devtools.restart.enabled", "false"); SpringApplication.run(MyApp.class, args);}
本節原始碼地址:https://gitee.com/xtoad/ecms-java.git
最新評論