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須要修改兩個參數以達到任意時間自動編譯的目的。post
首先,File->setting->搜索compiler->將Make project automatically打勾(注意後面only works not running/debugging,因此咱們要實現熱部署就必須打破這個限制,因而乎有了下面設置)idea
而後,CTRL+ALT+SHIFT+/ 組合鍵打開 Maintenance窗口選擇Registry... ,找到compiler.automake.allow.when.app.running選項,打勾開啓運行時編譯功能(找了半天才發現是按字母排序的)debug