關於SpringBoot最權威(沒有之一)的文檔,當然是來自官方手冊:https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/
本文要介紹的項目熱部署,我分爲IDEA配置和SpringBoot配置。
1、IDEA配置
1.1.開啓項目自動編譯
1.2.開啓項目運行時編譯器自動編譯
2、SpringBoot配置
2.1.依賴SpringBoot開發工具starter
SpringBoot提供了一個用於提高開發體驗的類庫叫做devtools,其中包括熱部署(快速重啓)。該技術的深層原理是使用了兩個ClassLoader(類加載器),一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱爲restart ClassLoader,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新創建一個restart ClassLoader,由於需要加載的類相比較少,所以實現了較快的重啓時間。
引入該類庫需要在pom.xml中添加如下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
2.2.build的插件引入springloaded庫
(該配置主要在eclipse中生效,IDEA不需要)
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <!-- spring熱部署 --> <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId> <version>1.2.6.RELEASE</version> </dependency> </dependencies> </plugin> </plugins> </build>
2.3.靜態資源目錄排除
有時候在開發期間,修改了java代碼、xml、properties配置等需要熱部署,但修改js、html等不需要重啓,那麼可以排除監聽部分目錄。在項目的application.properties文件中添加如下配置:
spring.devtools.restart.enabled=true spring.devtools.restart.exclude=static/**,templates/**,META-INF/**
@六噸代碼