做過java web的同學(xué)應(yīng)該都知道jvm 的hotswap。例如你在使用tomcat作為web容器的時(shí)候,在debug模式下啟動(dòng)tomcat,你這個(gè)時(shí)候修改java代碼,會(huì)立即生效。但是,這個(gè)“修改”是有條件限制的:就是你只能夠修改方法體中的內(nèi)容。這就苦了我們的工程師,如果修改方法名,修改方法參數(shù)類型、數(shù)量,新增變量、方法,這些都是不可以奏效的。這時(shí),eclipse會(huì)彈出一個(gè)窗口提示。

這個(gè)時(shí)候如果點(diǎn)擊continue的話,你的修改不會(huì)起到任何作用,代碼實(shí)際上執(zhí)行的還是之前的邏輯。如果想要你修改的代碼生效就只能重啟服務(wù),但是重啟服務(wù)是需要花時(shí)間的。怎樣才能不重啟服務(wù)器也可以及時(shí)運(yùn)行我們修改的代碼呢? 經(jīng)過一番查找,找到JRebel這個(gè)東西,據(jù)說非常強(qiáng)大,但可惜的是JRebel是收費(fèi)的,而且還不便宜呢,$365/年。那有沒有免費(fèi)開源的,同樣可以實(shí)現(xiàn)我們熱部署?有的,就在github上面:https://github.com/sPRing-projects/spring-loaded
下面就介紹一下如何利用spring-loaded實(shí)現(xiàn)熱部署。
STEP1: 首先需要得到spring-loaded的jar包,github上面有鏈接,這里我使用springloaded-1.2.5.RELEASE.jar,將它放到本地c:/springloaded-1.2.5.RELEASE.jar。
STEP2: Window -> Preferences -> Java -> Installed JREs
然后Edit Installed JREs, Default VM arguments 添加參數(shù): -javaagent:c:/springloaded-1.2.5.RELEASE.jar –noverify 至此spring-loaded的配置完成了,即使在tomcat非debug模式下也可以實(shí)現(xiàn)官方所說的:
add/modify/delete methods/fields/constructors. The annotations on types/methods/fields/constructors can also be modified and it is possible to add/remove/change values in enum types.
但是對(duì)于第三方像是Spring注解這些的修改,spring-loaded就無能為力了,必須求助于前面所說的收費(fèi)的JRebel了。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注