1. 程式人生 > >SpringBoot項目在IntelliJ IDEA中實現熱部署

SpringBoot項目在IntelliJ IDEA中實現熱部署

span 修改配置文件 必須 net 保存 work ssl -- 修改

spring-boot-devtools是一個為開發者服務的一個模塊,其中最重要的功能就是自動應用代碼更改到最新的App上面去。
原理是在發現代碼有更改之後,重新啟動應用,但是速度比手動停止後再啟動更快。
其深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱為restart ClassLoader
,這樣在有代碼更改的時候,原來的restart ClassLoader被丟棄,重新創建一個restart ClassLoader,由於需要加載的類相比較少,所以實現了較快的重啟時間。

即devtools會監聽classpath下的文件變動,並且會立即重啟應用(發生在保存時機)

一、開啟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依賴

1 <dependency>
2     <groupId>org.springframework.boot</groupId
> 3 <artifactId>spring-boot-devtools</artifactId> 4 <optional>true</optional> 5 </dependency>

2、開啟熱部署

 1 <build>
 2     <plugins>
 3         <plugin>
 4             <groupId>org.springframework.boot</groupId>
 5             <artifactId
>spring-boot-maven-plugin</artifactId> 6 <configuration> 7 <fork>true</fork>//該配置必須 8 </configuration> 9 </plugin> 10 </plugins> 11 </build>

三、Chrome禁用緩存
F12(或Ctrl+Shift+J或Ctrl+Shift+I)--> NetWork --> Disable Cache(while DevTools is open)

技術分享

至此,在idea中就可以愉快的修改代碼了,修改後可以及時看到效果,無須手動重啟和清除瀏覽器緩存。

測試方法:
1.修改類-->保存:應用會重啟
2.修改配置文件-->保存:應用會重啟
3.修改頁面-->保存:應用會重啟,頁面會刷新(原理是將spring.thymeleaf.cache設為false)

不能使用分析:
1.對應的spring-boot版本是否正確,我這裏使用的是1.5.3.RELEASE版本;
2.是否加入plugin了,以及屬性<fork>true</fork>
3.Intellij IDEA是否開啟了Make Project Automatically。
4.如果設置SpringApplication.setRegisterShutdownHook(false),則自動重啟將不起作用。

參考:

http://412887952-qq-com.iteye.com/blog/2300313

SpringBoot項目在IntelliJ IDEA中實現熱部署