首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Boot項目打包部署到外部Tomcat容器完整步驟

     編輯:Java 相關知識

Spring Boot 內嵌 Tomcat 方便開發測試,但生產環境常需部署到獨立的 Tomcat 實例。本文詳細說明從修改打包方式、排除內嵌容器、添加 Servlet API 依賴、改造啟動類到最終打包部署的完整流程。

一、修改打包類型為 WAR

<packaging>war</packaging>

二、排除內嵌 Tomcat

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

三、添加 Servlet API 依賴(二選一)

<!-- 方案一:官方 Servlet API -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

<!-- 方案二:Tomcat 提供的 Servlet API -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>8.0.36</version>
    <scope>provided</scope>
</dependency>

provided 作用域表示編譯時需要,運行時由容器提供,不會打入 WAR。

四、改造啟動類繼承 SpringBootServletInitializer

原有主類保持不變:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

新增一個啟動適配類:

public class SpringBootStartApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(Application.class);
    }
}

此類會被 Servlet 容器自動發現並調用 configure,完成 Spring 上下文初始化。

五、打包與部署

  1. 項目根目錄執行:mvn clean package
  2. 等待出現 [INFO] BUILD SUCCESS,WAR 文件生成在 target/ 目錄
  3. 將 WAR 複製到 Tomcat webapps/ 目錄
  4. 啟動 Tomcat(bin/startup.sh 或 startup.bat),容器自動解壓部署

六、訪問驗證

瀏覽器輸入:

https://localhost:8080/<項目名>/

若配置了 server.servlet.context-path,需加上上下文路徑。

七、常見問題

  • 404 錯誤:檢查 WAR 名稱是否與訪問路徑一致,或配置 server.servlet.context-path
  • 類衝突:確保 servlet-api 僅以 provided 引入,避免與容器自帶 JAR 衝突
  • 靜態資源不生效:Spring Boot 靜態資源映射在外部容器下仍有效,若失效可在 SpringBootStartApplication 中添加 @EnableWebMvc 並繼承 WebMvcConfigurer 配置資源處理器

完成上述步驟,Spring Boot 應用即可像傳統 WAR 包一樣部署到任何兼容 Servlet 3.0+ 的容器中,實現開發與生產環境的無縫切換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved