SpringBoot實(shí)現(xiàn)熱部署的方式總結(jié)
一、什么是熱部署?
釋義
所謂熱部署,就是在應(yīng)用正在運(yùn)行的時(shí)候升級(jí)軟件,卻不需要重新啟動(dòng)應(yīng)用。
對(duì)于Java應(yīng)用程序來說,熱部署就是在運(yùn)行時(shí)更新Java類文件。在基于Java的應(yīng)用服務(wù)器實(shí)現(xiàn)熱部署的過程中,類裝入器扮演著重要的角色。大多數(shù)基于Java的應(yīng)用服務(wù)器,包括EJB服務(wù)器和Servlet容器,都支持熱部署。類裝入器不能重新裝入一個(gè)已經(jīng)裝入的類,但只要使用一個(gè)新的類裝入器實(shí)例,就可以將類再次裝入一個(gè)正在運(yùn)行的應(yīng)用程序。
Tomcat的熱部署(以后就不用重啟了)
沒有熱部署和有熱部署的開發(fā)效率是天差地別的。這個(gè)問題還受很多第三方軟件包(Struts,Spring,Hibernate)的限制。本來可以熱部署,加入了第三方的包就不可以了。所以,先說明詳細(xì)的軟件環(huán)境,和程序配置是非常必要的。
虛擬機(jī):java version “1.5.0_06”
Servlet Engine:Apache Tomcat/5.0.27
Eclipse:3.0.1
Myeclipse:3.8.3
應(yīng)用程序情況:純正的servlet+jsp+javabean,數(shù)據(jù)庫(kù)連接使用JDBC-ODBC橋連接Access數(shù)據(jù)庫(kù)。沒有使用任何第三方軟件包,沒有使用Struts,Spring,Hibernate。\WebRoot\WEB-INF\lib下是空的。
配置方法:
ie登陸http://Tomcat所在的服務(wù)器IP:8080/ -> 點(diǎn)超連接“Tomcat Administration”-> 輸入用戶名密碼登陸 ->在左側(cè)的功能樹中 -> Tomcat Server -> Service(Catalina) -> Host(localhost) -> Context(/要修改的web項(xiàng)目) ->右側(cè)新出現(xiàn)的頁(yè)面中 ->Reloadable設(shè)置為true -> Save按鈕 -> Commit Changes。
然后Tomcat日志顯示:
- debugging – changes saved to conf/server.xml
- Removing web application at context path /test
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\test.xml
- Removing web application at context path /admin
- unregistering logger Catalina:type=Logger,path=/admin,host=localhost
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\admin.xml
- Initializing, config=‘org.apache.struts.util.LocalStrings’, returnNull=true
- Initializing, config=‘org.apache.struts.action.ActionResources’, returnNull=true
- Initializing, config=‘org.apache.webapp.admin.ApplicationResources’, returnNull=true
- Removing web application at context path /webdav
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\webdav.xml
- Removing web application at context path /test
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\test.xml
……
這樣,設(shè)置就生效了。
開發(fā)時(shí),修改.java文件后,調(diào)用這個(gè)類時(shí)日志提示:
Reloading this Context has started
這是正在重新加載修改后的.class文件。
如果沒有進(jìn)行這個(gè)設(shè)置,修改.java文件后,不拋出異常。系統(tǒng)使用沒有修改的.java文件繼續(xù)運(yùn)行。
不同版本的Tomcat的配置方法是不同的。這里使用的是5.0.27
j2ee開發(fā)插件(這里使用Myeclipse),也可能導(dǎo)致熱部署失效。因?yàn)椴寮仨氁丫幾g好的.class文件從工作空間復(fù)制到Tomcat\webapps下的項(xiàng)目里。才能使Tomcat得到需要熱部署的文件。
注意:如果項(xiàng)目中加入了Struts,Hibernate,Spring之類的第三方軟件,可能導(dǎo)致熱部署失效。
二、實(shí)現(xiàn)熱部署方式
1.spring-boot-devtools
第一種方式是通過Springboot提供的開發(fā)者工具spring-boot-devtools來實(shí)現(xiàn)。
首先在pom.xml引用其依賴:
<!--快重啟--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- 可選 --> </dependency>
然后在Settings→Build→Compiler中將Build project automatically勾選上,最后按ctrl+shift+alt+/ 選擇registy,將compiler.automake.allow.when.app.running勾選。
如上,這樣就可以實(shí)現(xiàn)熱部署了。
但實(shí)際上,org.springframework.boot所實(shí)現(xiàn)的功能是快速啟動(dòng),加上自動(dòng)編譯就能實(shí)現(xiàn)所謂的”熱部署“了。
Build project automatically就代表著自動(dòng)編譯,但這項(xiàng)設(shè)定只在debug模式生效,所以要通過org.springframework.boot使其在普通運(yùn)行模式也能自動(dòng)編譯。
注意:上面說Build project automatically在debug模式也能生效,但是經(jīng)過我的測(cè)試,并不行,所以還是老老實(shí)實(shí)勾選compiler.automake.allow.when.app.running吧。另外,對(duì)于某些idea沒有這個(gè)選項(xiàng)的,設(shè)置好其他的之后,ctrl+f9也是可以的。
2.idea的熱部署功能
實(shí)際上idea已經(jīng)帶有一個(gè)熱部署的功能了,如圖:
如此設(shè)定之后,按道理還是設(shè)置Build project automatically和org.springframework.boot之后,就能實(shí)現(xiàn)熱部署了
3.Jrebel
Jrebel是一款熱部署插件,鑒于上面兩個(gè)方法已經(jīng)能完美實(shí)現(xiàn)熱部署了,所以我認(rèn)為沒什么必要再去研究它,所以在這里只是了解一下還有這種方式就行了。
有需要的,可以去此處學(xué)習(xí)→IDEA JRebel 插件熱部署(史上最全)
http://www.iocoder.cn/Fight/IDEA-JRebel-plug-in-hot-deployment/?self
到此這篇關(guān)于SpringBoot實(shí)現(xiàn)熱部署的方法總結(jié)的文章就介紹到這了,更多相關(guān)SpringBoot 熱部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- IDEA中實(shí)現(xiàn)springboot熱部署方式
- SpringBoot項(xiàng)目熱部署的實(shí)現(xiàn)
- SpringBoot+devtools實(shí)現(xiàn)熱部署的示例代碼
- IDEA2023.3.4開啟SpringBoot項(xiàng)目的熱部署(圖文)
- SpringBoot實(shí)現(xiàn)熱部署的三種方式
- SpringBoot使用DevTools實(shí)現(xiàn)后端熱部署的過程詳解
- Idea中springboot項(xiàng)目的熱部署無法生效問題解決
- Spring Boot 3.x 全新的熱部署配置方式詳解(IntelliJ IDEA 2023.1)
- Spring Boot 熱部署實(shí)現(xiàn)步驟詳解
相關(guān)文章
Spring Security中successHandler和failureHandler使用方式
這篇文章主要介紹了Spring Security中successHandler和failureHandler使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08springboot?html調(diào)用js無效400問題及解決
這篇文章主要介紹了springboot?html調(diào)用js無效400的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Spring Boot配置動(dòng)態(tài)更新問題
這篇文章主要介紹了Spring Boot配置動(dòng)態(tài)更新問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Java讀取制表符文本轉(zhuǎn)換為JSON實(shí)現(xiàn)實(shí)例
在Java開發(fā)中,處理各種數(shù)據(jù)格式是常見的任務(wù),本文將介紹如何使用Java讀取制表符文本文件,并將其轉(zhuǎn)換為JSON格式,以便于后續(xù)的數(shù)據(jù)處理和分析,我們將使用Java中的相關(guān)庫(kù)來實(shí)現(xiàn)這個(gè)過程,并提供詳細(xì)的代碼示例2024-01-01關(guān)于idea引入spring boot <parent></parent>父依賴標(biāo)紅問題
這篇文章主要介紹了idea引入spring boot <parent></parent>父依賴標(biāo)紅問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Java多數(shù)據(jù)源的三種實(shí)現(xiàn)方式小結(jié)
多數(shù)據(jù)源是在一個(gè)應(yīng)用程序中配置和使用多個(gè)不同的數(shù)據(jù)庫(kù)連接,本文主要介紹了Java多數(shù)據(jù)源的三種實(shí)現(xiàn)方式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2025-03-03淺析非對(duì)稱加密在接口參數(shù)中的實(shí)現(xiàn)
接口層做數(shù)據(jù)加密應(yīng)該算是老生常談的一件事了,業(yè)界用的比較多的,不外乎是對(duì)稱加密,非對(duì)稱加密以及兩者的結(jié)合。本文就來聊聊非對(duì)稱加密在接口參數(shù)中的實(shí)現(xiàn),希望對(duì)大家有所幫助2023-02-02Java設(shè)計(jì)模式之抽象工廠模式實(shí)例詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之抽象工廠模式,結(jié)合實(shí)例形式分析了抽象工廠模式的概念、功能、定義與使用方法,需要的朋友可以參考下2017-09-09