spring爲開發者提供了一個名爲spring-boot-devtools的模塊來使Spring Boot應用支持熱部署,提升開發者的開發效率,無需手動重啓Spring Boot應用。spring
devtools的原理app
深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另外一個ClassLoader加載會更改的類,稱爲restart ClassLoader,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,從新建立一個restart ClassLoader,因爲須要加載的類相比較少,因此實現了較快的重啓時間。ide
在pom.xml文件中添加devtools依賴spring-boot
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional><!--當其餘項目繼承該項目時,該座標不會被繼承-->
</dependency>
Eclipse默認自動編譯,而idea默認手動編譯,所以idea須要修改兩個參數以達到任意時間自動編譯的目的。idea
首先,File->setting->搜索compiler->將Make project automatically打勾(注意後面only works not running/debugging,因此咱們要實現熱部署就必須打破這個限制,因而乎有了下面設置)spa
而後,CTRL+ALT+SHIFT+/ 組合鍵打開 Maintenance窗口選擇Registry... ,找到compiler.automake.allow.when.app.running選項,打勾開啓運行時編譯功能(找了半天才發現是按字母排序的)debug