1. 程式人生 > >Spring Boot 學習系列(03)—jar or war,做出你的選擇

Spring Boot 學習系列(03)—jar or war,做出你的選擇

此文已由作者易國強授權網易雲社群釋出。

歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。


兩種打包方式

  • 採用Spring Boot框架來構建專案,我們對專案的打包有兩種方式可供選擇,一種仍保持原有的方式不變,package一個war包放置到外接的應用容器中;另一種則是直接打包成一個jar包,這個jar包裡面包含了內建的應用容器,可以通過Java命令直接啟動執行。

jar包方式

  • 對於jar包的方式,前面文章的示例中其實我們就是採用的此種方式,使用方式不再贅述。

war包方式

  • 如果採用war包的方式,其實也很簡單,我們僅僅需要變更下配置即可,具體操作如下所示:

  1. 將pom.xml檔案中打包方式變更成war

     <groupId>com.example.future</groupId>
     <artifactId>bingo</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <packaging>war</packaging>
  2. 變更內建容器(預設tomcat)的作用範圍為provided,這樣在打包時就不會將內嵌的容器打入war包中。在依賴中加入如下內容:

     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-tomcat</artifactId>
         <scope>provided</scope>
     </dependency>
  3. 自定義一個servlet初始化類,繼承SpringBootServletInitializer類,如下所示:

         package com.example.future;     import org.springframework.boot.builder.SpringApplicationBuilder;     import org.springframework.boot.web.support.SpringBootServletInitializer;     /**
          * @author future
          */
         public class ServletInitializer extends SpringBootServletInitializer {         @Override
             protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {             return application.sources(BingoApplication.class);
             }
         }
  4. 通過以上步驟即可完成war包方式的改寫。我們再執行package命令時,在target目錄下生成的即為專案war包了。




打包方式的選擇


  • 具體的打包方式可以根據我們專案的實際需求以及運維現狀來決定。顯而易見的,如果採用jar包的方式進行部署,那麼對於容器(如tomcat)的管理,開發人員可以介入其中自行維護,部署也相對簡單些。當然,若需要運維在外部配置指定也是可以的,在使用java命令啟動打好的jar包時指定執行引數即可。


  • 不足之處,歡迎指正,謝謝~


免費體驗雲安全(易盾)內容安全、驗證碼等服務

更多網易技術、產品、運營經驗分享請點選


相關文章:
【推薦】 程式碼線上編譯器(上)- 編輯及編譯
【推薦】 BRVAH(讓RecyclerView變得更高效) (3)