相信做開發(fā)的程序猿們都體驗(yàn)過修改一次代碼就要重啟一次的滋味吧簡直不要太爽辅辩,也比較影響工作效率离钝,本來熱部署準(zhǔn)備后面介紹的但是為了方便就先講了把挣郭。本文主要介紹兩種方法配置熱部署浸船,下面請聽細(xì)細(xì)道來妄迁。
一springloaded plugin
第一種方式通過springloaded plugin 插件的方式 在pom.xml 中添加如下節(jié)點(diǎn)
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<!-- springload hot deploy -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.4.RELEASE</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
添加完成后使用spring-boot:run的方式啟動如下圖。
便可以啟動項(xiàng)目但是測試一下熱部署 發(fā)現(xiàn)可以 具體可以下載我的代碼下來實(shí)驗(yàn) 接下來把項(xiàng)目關(guān)閉再次啟動發(fā)現(xiàn)出問題了端口占用李命,通過這種方式配置的熱部署 用spring-boot:run 的啟動方式運(yùn)行工程登淘, 關(guān)閉時(shí)不會關(guān)閉后臺進(jìn)程。通過第二種方式啟動將springloaded-1.2.4.RELEASE.jar下載下來放到任意文件夾 文件夾下 然后將eclipce run VM參數(shù)參數(shù)設(shè)置為-javaagent:H:\m2\repository\org\springframework\springloaded\1.2.4.RELEASE\springloaded-1.2.4.RELEASE.jar -noverify 這樣通過run as 啟動時(shí)也能熱部署
關(guān)閉后端口是可以關(guān)閉的沒有出現(xiàn)上一種方法的問題但是測試的時(shí)候又發(fā)現(xiàn)了一個(gè)問題 修改一個(gè)方法的時(shí)候能夠生效封字,但是添加一個(gè)方法的時(shí)候就沒有效果了這個(gè)就尷尬了下面介紹第二種方法黔州。
二spring-boot- devtools
將上述的插件注視掉 在pom.xml中添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
添加相應(yīng)的插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
啟動項(xiàng)目測試 :
1重新啟動端口是否能被關(guān)閉
2修改一個(gè)方法能否熱部署
3添加一個(gè)方法能否熱部署
4添加一個(gè)類能否熱部署
5修改配置文件能否熱部署
發(fā)現(xiàn)都是成功的耍鬓。由此熱部署便配置好了
其原理是使用了兩個(gè)classLoader ,一個(gè)是Classloader加載那些不會改變的類如第三方j(luò)ar ,另一個(gè)ClassLoader加載那些會改變的類成為restart ClassLoader ,這樣有代碼更改的時(shí)候原來的流妻,restart ClassLoader 在創(chuàng)建一個(gè)新的restart ClassLoader 加載的類相對較少所以啟動比較快牲蜀,便達(dá)到熱部署的效果。
文章地址 http://www.haha174.top/article/details/252133
項(xiàng)目源碼 https://github.com/haha174/boot.git