日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

springboot項目打包成war用tomcat運行好還是打包成jar直接啟動好

時間:2022-09-01 10:13:24 類型:JAVA
字號:    

  Spring Boot是用來簡化Spring應用的配置和開發(fā)過程的,此框架采用了“約定優(yōu)于配置”的理念,免去了繁瑣的XML配置,使我們開發(fā)項目更簡單。而且Spring Boot提供了兩種項目打包方式:生成war文件、生成可執(zhí)行的jar文件,很多Java開發(fā)者不清楚這兩種項目打包方式的區(qū)別,生產(chǎn)環(huán)境該選哪種方式呢?

  Spring Boot項目部署方式的區(qū)別

  1、war包方式部署

  war包其實是打包后的Java Web工程,本質(zhì)上是個壓縮包,里面包含了很多目錄及文件,我們把war包放入Tomcat這類容器中啟動后,war包就會自動解壓出一個同名的文件夾來。

  注意:Spring Boot項目如果要打包成war包來部署,是需要修改項目入口文件代碼的。另外由于Spring Boot內(nèi)置了Tomcat容器,所以打包成war包時要將內(nèi)置的Tomcat依懶排除掉。

  2、可執(zhí)行jar文件方式部署

  Spring Boot框架默認的打包部署方式是生成一個可執(zhí)行的jar文件,無論項目多么復雜,依懶包有多少,最終只有一個jar文件(有些可能有外置的配置文件),在任何一臺裝有JRE/JDK環(huán)境的服務器上可以直接以 java -jar xx.jar 這種方式來運行(其實是靠內(nèi)置的Tomcat來運行的),十分方便。

  可執(zhí)行jar文件方式部署是我們推薦的,特別是在微服務場景下部署更便捷

  生產(chǎn)環(huán)境如何選擇布署方式?

  無論是war方式還是jar方式,本質(zhì)上差別并不大。在生產(chǎn)環(huán)境下還是要選擇合適的方式。

  war包是放在Servlet容器中(如:Tomcat)運行的,所以像上下文路徑、端口號等是war包無法決定的;

  jar包由于內(nèi)嵌了Tomcat容器,所以端口號、上下文路徑可由jar包自己決定,雖然方便但是jar方式打包后的文件較war包的要大得多。

  綜上,如果服務器配置高、節(jié)點多、微服務方式,建議選擇jar方式部署;如果服務器配置跟不上,建議選擇war方式部署(省內(nèi)存空間)


  從事Java服務端研發(fā)工作的同學相信都用過springboot框架來開發(fā)項目,做過多個項目的同學一定也經(jīng)歷過war包或jar包的部署方式,甚至同一個團隊有時候不同的項目也會采取不同的方式。

  那么到底是用war包部署還是用jar包部署呢?個人經(jīng)驗認為,從性能方面考慮兩者都可以做到高并發(fā)、高性能。而具體應該采用哪種方式應該看具體的研發(fā)團隊規(guī)模以及項目研發(fā)流程。

  war包部署方式

  我們將項目打成war包部署到服務器上的tomcat的webapps目錄下,tomcat啟動時候都會解壓這個war包并創(chuàng)建一個同名文件夾,文件夾目錄如下:

  其中META-INF文件是war包的描述文件,忽略即可。

  主要是WEB-INF文件夾,里面有class和lib兩個文件夾:

  class文件基本上會包含我們項目里的class、properties、xml等文件;

  lib則是我們依賴的第三方jar包

  我們在本地使用maven構建的時候也會在target目錄下形成這樣一系列的文件或文件夾:

  jar包部署方式


  SpringBoot項目可以打成jar包部署,也可以打成war包部署,它們倆本質(zhì)上都是使用Tomcat來部署應用,但是使用上會有不同:

  jar包方式,打jar包的時候其實還是把Tomcat內(nèi)嵌到jar包中了,將應用代碼和部署應用服務器集成到一個jar包中,通過設置啟動類(一般是SpringBoot的應用啟動類)來實現(xiàn)jar包的運行,這種方式對于運維操作來說方便、快捷,因為操作就是一個jar包,但是它的缺點就是無法在jar包外部配置Tomcat的相關配置參數(shù),如果需要修改只能修改SpringBoot內(nèi)部規(guī)定的配置文件,還有就是使用jsp或其它模板語言上會很麻煩,因為有些不兼容或配置麻煩,所以,如果你的應用不涉及前端頁面展示,前后端分離的模式,推薦jar包方式。

  war包方式,這種方式大家都很熟悉了,將編譯后的class文件和應用資源按照war的規(guī)則打包,war包直接放到Tomcat服務器設置的war包目錄下,啟動Tomcat就會解壓war包、加載應用資源、部署應用,這種方式成熟、普遍,但是運維相對來說管的事多一些,例如Tomcat服務器的配置、Tomcat資源的管理、war包發(fā)布到Tomcat等,不過在出現(xiàn)問題時,這種方式可以按照之前的邏輯去發(fā)現(xiàn)問題、解決問題,如果是jar包方式,就只能研發(fā)自己去解決了,還有如果你的項目有前端展示層的代碼,前后端不是分離的,例如使用jsp或展示層模板語言,推薦使用war包方式。


  兩種方式都可以,看你們的項目與決策吧。

  jar包:直接通過內(nèi)置tomcat運行,不需要額外安裝tomcat。如需修改內(nèi)置tomcat的配置,只需要在spring boot的配置文件中配置。內(nèi)置tomcat沒有自己的日志輸出,全靠jar包應用輸出日志。但是比較方便,快速,比較簡單。

  war包:傳統(tǒng)的應用交付方式,需要安裝tomcat,然后放到waeapps目錄下運行war包,可以靈活選擇tomcat版本,可以直接修改tomcat的配置,有自己的tomcat日志輸出,可以靈活配置安全策略。相對打成jar包來說沒那么快速方便。


<