Spring Boot Devtools熱部署
平日里開(kāi)發(fā)項(xiàng)目中,修改了Java代碼或者配置文件的時(shí)候,必須手動(dòng)重啟項(xiàng)目才能生效。所謂的熱部署就是在你修改了后端代碼后不需要手動(dòng)重啟,工具會(huì)幫你快速的自動(dòng)重啟是修改生效。其深層原理是使用了兩個(gè)ClassLoader
,一個(gè)Classloader
加載那些不會(huì)改變的類(lèi)(第三方Jar包),另一個(gè)ClassLoader
加載會(huì)更改的類(lèi),稱(chēng)為restart ClassLoader
,這樣在有代碼更改的時(shí)候,原來(lái)的restart ClassLoader
?被丟棄,重新創(chuàng)建一個(gè)restart ClassLoader
,由于需要加載的類(lèi)相比較少,所以實(shí)現(xiàn)了較快的重啟時(shí)間。
本文將介紹如何通過(guò)使用Spring-Boot-devtools
來(lái)實(shí)現(xiàn)Spring Boot項(xiàng)目的熱部署。IDE使用的是Eclipse Oxygen,并且使用Maven構(gòu)建。
引入Devtools

devtools會(huì)監(jiān)聽(tīng)classpath下的文件變動(dòng),并且會(huì)立即重啟應(yīng)用(發(fā)生在保存時(shí)機(jī)),因?yàn)槠洳捎玫奶摂M機(jī)機(jī)制,該項(xiàng)重啟是很快的。
在Eclipse中生效還需要修改spring-boot-maven-plugin
插件:

并且開(kāi)啟Build Automatically:

測(cè)試熱部署
在入口類(lèi)中添加一個(gè)方法,用于熱部署測(cè)試:

啟動(dòng)項(xiàng)目訪(fǎng)問(wèn)http://localhost:8080/,頁(yè)面輸出hello spring boot。
將方法的返回值修改為hello world并在保存的瞬間,應(yīng)用便重啟好了,刷新頁(yè)面,內(nèi)容也將得到更改。
所有配置
下面是所有Devtools在Spring Boot中的可選配置:
