1. 程式人生 > >IntelliJ IDEA Spring boot實現熱部署

IntelliJ IDEA Spring boot實現熱部署

chrom 最重要的 配置文件 實現 auto 需要 blog 圖片 tom

一、spring-boot-devtools是一個為開發者服務的一個模塊,其中最重要的功能就是自動部署新代碼。

二、原理

  使用了兩個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 重啟idea 重啟idea 重啟idea 重啟idea 重啟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)

  技術分享圖片


測試方法:
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),則自動重啟將不起作用。

IntelliJ IDEA Spring boot實現熱部署