SpringBoot項(xiàng)目在IntelliJ IDEA中如何實(shí)現(xiàn)熱部署
spring-boot-devtools是一個為開發(fā)者服務(wù)的一個模塊,其中最重要的功能就是自動應(yīng)用代碼更改到最新的App上面去。
原理是在發(fā)現(xiàn)代碼有更改之后,重新啟動應(yīng)用,但是速度比手動停止后再啟動更快。其深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱為restart ClassLoader
,這樣在有代碼更改的時候,原來的restart ClassLoader被丟棄,重新創(chuàng)建一個restart ClassLoader,由于需要加載的類相比較少,所以實(shí)現(xiàn)了較快的重啟時間。即devtools會監(jiān)聽classpath下的文件變動,并且會立即重啟應(yīng)用(發(fā)生在保存時機(jī))
一、開啟idea自動make功能
1、CTRL + SHIFT + A --> 查找make project automatically --> 選中
2、CTRL + SHIFT + A --> 查找Registry --> 找到并勾選compiler.automake.allow.when.app.running
最后重啟idea
二、使用spring-boot-1.3開始有的熱部署功能
1、加maven依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
2、開啟熱部署
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork>//該配置必須 </configuration> </plugin> </plugins> </build>
三、Chrome禁用緩存
F12(或Ctrl+Shift+J或Ctrl+Shift+I)--> NetWork --> Disable Cache(while DevTools is open)
至此,在idea中就可以愉快的修改代碼了,修改后可以及時看到效果,無須手動重啟和清除瀏覽器緩存。
測試方法:
1.修改類-->保存:應(yīng)用會重啟
2.修改配置文件-->保存:應(yīng)用會重啟
3.修改頁面-->保存:應(yīng)用會重啟,頁面會刷新(原理是將spring.thymeleaf.cache設(shè)為false)
不能使用分析:
1.對應(yīng)的spring-boot版本是否正確,我這里使用的是1.5.3.RELEASE版本;
2.是否加入plugin了,以及屬性<fork>true</fork>
3.Intellij IDEA是否開啟了Make Project Automatically。
4.如果設(shè)置SpringApplication.setRegisterShutdownHook(false),則自動重啟將不起作用。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring 實(shí)現(xiàn)給Bean屬性注入null值
這篇文章主要介紹了Spring 實(shí)現(xiàn)給Bean屬性注入null值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08Java面向?qū)ο蟪绦蛟O(shè)計:類的定義,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝與私有,this概念與用法詳解
這篇文章主要介紹了Java面向?qū)ο箢惖亩x,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝與私有,this概念與用法,較為詳細(xì)的分析了Java類的定義,靜態(tài)變量,成員變量,構(gòu)造函數(shù),封裝,私有等相關(guān)原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04由@NotNull注解引出的關(guān)于Java空指針的控制
這是一些很容易學(xué)會的簡單技術(shù),但是對于代碼質(zhì)量和健壯性來說確實(shí)很重要。以我的經(jīng)驗(yàn),僅是第一個小技巧就已經(jīng)對改進(jìn)代碼質(zhì)量具有很大的作用了2016-09-09Java基于ShardingSphere實(shí)現(xiàn)分庫分表的實(shí)例詳解
ShardingSphere?已于2020年4月16日成為?Apache?軟件基金會的頂級項(xiàng)目,?它們均提供標(biāo)準(zhǔn)化的數(shù)據(jù)水平擴(kuò)展、分布式事務(wù)和分布式治理等功能,可適用于如?Java?同構(gòu)、異構(gòu)語言、云原生等各種多樣化的應(yīng)用場景,對ShardingSphere分庫分表相關(guān)知識感興趣的朋友一起看看吧2022-03-03idea新建Springboot項(xiàng)目,設(shè)置默認(rèn)maven和jdk版本方式
這篇文章主要介紹了idea新建Springboot項(xiàng)目,設(shè)置默認(rèn)maven和jdk版本方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12