Spring Boot使用devtools進行熱部署

使用springloaded進行熱部署,可是新增變量、方法等...並不會進行熱部署。spring

使用devtools則能解決這些問題,包括新增/刪除方法,添加新的類,修改配置文件等一系列操做均能進行熱部署。app

 

什麼是devtools

  • spring-boot-devtools:是一個爲開發者服務的一個模塊,最重要的功能就是自動將應用代碼更新到最新的App上去。原理是檢測到代碼有更改以後,會從新啓動服務,可是速度比手動操做更快,這裏的更快並非指手工操做時間。
  • 其深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另外一個ClassLoader加載會更改的類,稱爲 restart ClassLoader,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,從新建立一個restart ClassLoader,因爲須要加載的類相比較少,因此實現了較快的重啓時間(5秒之內)。

 

修改pom.xml文件

  • 添加spring-boot-devtools 依賴包
<!-- 添加devtools依賴包 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<optional>true</optional>
	<scope>true</scope>
</dependency>
  • 添加spring-boot-devtools plugin
<!-- 構建節點 -->
<build>
	<plugins>
		<!-- 添加spring-boot-devtools plugin -->
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<fork>true</fork>
			</configuration>
		</plugin>
	</plugins>
</build>

配置好以後啓動服務,能夠測試新增/修改/刪除方法或者修改配置文件和新增類進行測試,而後使用頁面進行訪問驗證,每一次保存都會自動重啓服務。maven

 

  • spring-boot-devtools會監聽classpath下的文件變更,保存以後會當即重啓應用,由於採用的虛擬機機制,該項重啓是很是快的。
  • spring-boot-devtools能夠實現頁面熱部署,頁面修改後當即生效,能夠直接在application.properties文件中配置spring.thymeleaf.cache=false來實現(不一樣的模板配置不同)。
相關文章
相關標籤/搜索