首先針對問題的疑問點有些不太明確,具體猜測來看感覺像是想要知道打包成jar和war的區別在哪,筆者也就從這個角度去說一下,希望我對問題的理解是對的。
談到打包,那麼首先spring boot在專案中到底是個什麼樣的角色,市面上的多數說法是“全家桶”,說法沒有錯,但是這個全家桶裡具體有什麼需要搞清楚。
那麼,再回到當前這個問題上,spring boot相比於傳統spring專案,它們的其中一點區別在於其內嵌了tomcat伺服器,這意味著什麼,我們不需要外部容器了!從正反兩方面來談談:
一、不可否認,生產環境下spring boot專案既可以打成jar,也可以打成war包,但是官方推薦還是打成jar比較好,原因很簡單,“明明給你全家桶的優惠價了,你為什麼還要單點呢?”,當啟動spring boot應用時,內建tomcat伺服器就會啟動並載入應用(這個從啟動日誌就能看到);
二、如果打成war包,那麼啟動時就需要依賴如tomcat或jetty這些容器(不可避免的還會引起jar衝突,需要手工排除依賴),這樣也就變相違背了spring boot設計為全家桶的初衷(因為jar的入口就是main函式呀);
最後總結一下,其實spring boot提供了SpringBootStartApplication.class,其作用會因為在外部容器部署下,而不能依賴於Application的main函數了,相反,要以類似於web.xml檔案配置的方式來啟動應用的上下文,相當於spring boot被你變相打回原形,變成普通的spring專案了。
首先針對問題的疑問點有些不太明確,具體猜測來看感覺像是想要知道打包成jar和war的區別在哪,筆者也就從這個角度去說一下,希望我對問題的理解是對的。
談到打包,那麼首先spring boot在專案中到底是個什麼樣的角色,市面上的多數說法是“全家桶”,說法沒有錯,但是這個全家桶裡具體有什麼需要搞清楚。
那麼,再回到當前這個問題上,spring boot相比於傳統spring專案,它們的其中一點區別在於其內嵌了tomcat伺服器,這意味著什麼,我們不需要外部容器了!從正反兩方面來談談:
一、不可否認,生產環境下spring boot專案既可以打成jar,也可以打成war包,但是官方推薦還是打成jar比較好,原因很簡單,“明明給你全家桶的優惠價了,你為什麼還要單點呢?”,當啟動spring boot應用時,內建tomcat伺服器就會啟動並載入應用(這個從啟動日誌就能看到);
二、如果打成war包,那麼啟動時就需要依賴如tomcat或jetty這些容器(不可避免的還會引起jar衝突,需要手工排除依賴),這樣也就變相違背了spring boot設計為全家桶的初衷(因為jar的入口就是main函式呀);
最後總結一下,其實spring boot提供了SpringBootStartApplication.class,其作用會因為在外部容器部署下,而不能依賴於Application的main函數了,相反,要以類似於web.xml檔案配置的方式來啟動應用的上下文,相當於spring boot被你變相打回原形,變成普通的spring專案了。