熱加載
熱加載可以使代碼修改後無須重啓服務器,就可以加載更改的代碼。(其實分 java 和非 java 代碼, 本處可以讓 java 代碼立即生效且不重啓服務)
第 1 種:修改服務器配置,使得 IDEA 窗口失去焦點時,更新類和資源
菜單 Run -> EditConfiguration , 然後配置指定服務器下,右側 server 標籤下 on frame deactivation = Update classes and resource。
優點:簡單
缺點:基於 JVM 提供的熱加載僅支持方法塊內代碼修改,只有 debug 模式下,並且是在 idea 失去焦點時纔會出發熱加載
熱部署
熱部署修改代碼後,需要重啓服務器,才能加載更改的 java 代碼。(本處, 可以讓 java 代碼和非 java 代碼, 都生效, 但必須重啓服務)
第 2 種:使用 springloaded.jar 包
a. 下載 jar 包,github:https://github.com/spring-projects/spring-loaded
b. 啓動應用時添加 VM 啓動參數:-javaagent:/home/lkqm/.m2/repository/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify
優點:對 Spring 系列框架支持好(不含 Spring boot), 支持 成員級別的修改(增刪改方法、字段、註解),支持對枚舉值集。使用這種形式加載 springloaded 經過測試, 延遲不算高, java 代碼修改後控制檯看不到重啓信息卻也能生效.
缺點:與優點相對
更簡單的方式
maven 插件中使用 pom.xml 配置 springloaded 插件的依賴
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
然後在終端使用命令行 mvn spring-boot:run 啓動,而通過 Application.run 方式啓動的會無效,因爲通過應用程序啓動時,已經繞開了 Maven 插件機制。
第 3 種:使用 spring-boot-devtools 提供的開發者工具
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- 有人說optional一定要配置成true纔有效, 但我調試完感覺不加optional也有效 -->
<optional>true</optional>
</dependency>
優點:簡單,支持 Spring-boot 項目,支持成員級別的修改熱部署。
缺點:只支持 spring-boot 項目。
相關: application.properties 配置
#熱部署默認會重啓
spring.devtools.restart.enabled=true
#添加那個目錄的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
#排除那個目錄的文件不需要restart
spring.devtools.restart.exclude=static/**,public/**
第 4 種:使用 Jrebel 插件實現熱部署 (該插件 14 天免費試用)
在線安裝:菜單 File -> Setting -> Plugin, 點擊右側底部 Browse repositories, 彈出框頂部輸入: JReble for Intellij, 選中安裝即可。
優點:強大,對各類框架支持,並且提供 IDE 插件的方式。
後 3 種方法是基於類加載機制來實現熱加載的,因此你修改完成代碼後必須重新編譯當前代碼,才能觸發熱部署。
idea 操作
Eclipse 默認就支持了自動編譯,而在 Intellij IDEA 中默認是關閉了自動編譯的,可以按照如下 2 步設置開啓:
- IDEA 開啓項目自動編譯,進入設置,Build,Execut, Deployment -> Compiler 勾選中左側的 Build Project automatically
- IDEA 開啓項目運行時自動 make, ctrl + shift + alt + / 命令:registry -> 勾選 compiler.automake.allow.when.app.running
參考自:
Intellij IDEA 4 種配置熱部署的方法 ==>https://www.cnblogs.com/a8457013/p/7866536.html
其它參考
spring boot 修改代碼後無需重啓設置,在開發時實現熱部署 ==>https://blog.csdn.net/testcs_dn/article/details/79929886
SpringBoot 入門 - 2(兩種熱部署方式)==>https://www.cnblogs.com/xswz/p/7350562.html
作者:whatlonelytear
本文地址:https://www.cnblogs.com/whatlonelytear/p/10370767.html
歡迎轉載,請在明顯位置標明出處及鏈接。
熱加載可以使代碼修改後無須重啓服務器,就可以加載更改的代碼。(其實分 java 和非 java 代碼, 本處可以讓 java 代碼立即生效且不重啓服務)
第 1 種:修改服務器配置,使得 IDEA 窗口失去焦點時,更新類和資源
菜單 Run -> EditConfiguration , 然後配置指定服務器下,右側 server 標籤下 on frame deactivation = Update classes and resource。
優點:簡單
缺點:基於 JVM 提供的熱加載僅支持方法塊內代碼修改,只有 debug 模式下,並且是在 idea 失去焦點時纔會出發熱加載
熱部署
熱部署修改代碼後,需要重啓服務器,才能加載更改的 java 代碼。(本處, 可以讓 java 代碼和非 java 代碼, 都生效, 但必須重啓服務)
第 2 種:使用 springloaded.jar 包
a. 下載 jar 包,github:
https://github.com/spring-projects/spring-loaded
b. 啓動應用時添加 VM 啓動參數:-javaagent:/home/lkqm/.m2/repository/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify
優點:對 Spring 系列框架支持好(不含 Spring boot), 支持 成員級別的修改(增刪改方法、字段、註解),支持對枚舉值集。使用這種形式加載 springloaded 經過測試, 延遲不算高, java 代碼修改後控制檯看不到重啓信息卻也能生效.
缺點:與優點相對
更簡單的方式
maven 插件中使用 pom.xml 配置 springloaded 插件的依賴
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
然後在終端使用命令行 mvn spring-boot:run 啓動,而通過 Application.run 方式啓動的會無效,因爲通過應用程序啓動時,已經繞開了 Maven 插件機制。
第 3 種:使用 spring-boot-devtools 提供的開發者工具
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- 有人說optional一定要配置成true纔有效, 但我調試完感覺不加optional也有效 -->
<optional>true</optional>
</dependency>
優點:簡單,支持 Spring-boot 項目,支持成員級別的修改熱部署。
缺點:只支持 spring-boot 項目。
相關: application.properties 配置
#熱部署默認會重啓
spring.devtools.restart.enabled=true
#添加那個目錄的文件需要restart
spring.devtools.restart.additional-paths=src/main/java
#排除那個目錄的文件不需要restart
spring.devtools.restart.exclude=static/**,public/**
第 4 種:使用 Jrebel 插件實現熱部署 (該插件 14 天免費試用)
在線安裝:菜單 File -> Setting -> Plugin, 點擊右側底部 Browse repositories, 彈出框頂部輸入: JReble for Intellij, 選中安裝即可。
優點:強大,對各類框架支持,並且提供 IDE 插件的方式。
後 3 種方法是基於類加載機制來實現熱加載的,因此你修改完成代碼後必須重新編譯當前代碼,才能觸發熱部署。
idea 操作
Eclipse 默認就支持了自動編譯,而在 Intellij IDEA 中默認是關閉了自動編譯的,可以按照如下 2 步設置開啓:
- IDEA 開啓項目自動編譯,進入設置,Build,Execut, Deployment -> Compiler 勾選中左側的 Build Project automatically
- IDEA 開啓項目運行時自動 make, ctrl + shift + alt + / 命令:registry -> 勾選 compiler.automake.allow.when.app.running
參考自:
Intellij IDEA 4 種配置熱部署的方法 ==>https://www.cnblogs.com/a8457013/p/7866536.html
其它參考
spring boot 修改代碼後無需重啓設置,在開發時實現熱部署 ==>https://blog.csdn.net/testcs_dn/article/details/79929886
SpringBoot 入門 - 2(兩種熱部署方式)==>https://www.cnblogs.com/xswz/p/7350562.html