嵌入式Servlet容器:将应用程序打包为可执行JAR文件

优点:部署简单、便于携带; 缺点:默认不支持JSP页面渲染、性能优化和定制配置较复杂;

外置Servlet容器:需独立安装Tomcat服务器,应用程序采用WAR包格式部署。

步骤

1. 创建 war 类型项目

通过 IDE(如 IDEA)创建 Spring Boot 项目时,指定打包类型为war(而非默认的jar),确保项目自动生成 web 应用所需的基础目录结构(如src/main/webapp,后续可存放 JSP、WEB-INF 等资源)。

2.排除嵌入式 Tomcat 依赖(避免冲突)

pom.xml中,将spring-boot-starter-tomcat的依赖范围设置为provided(表示该依赖由外部容器提供,打包时不包含),避免与外置 Tomcat 产生类冲突:

3. 配置 web 资源目录(如需 JSP 等)

若应用需要使用 JSP 或传统 web 资源(如web.xml),需在src/main下创建webapp目录,并按标准 web 结构存放资源:

  • JSP 文件:src/main/webapp/WEB-INF/jsp/(需配合视图解析器配置)
  • 静态资源(CSS/JS):src/main/webapp/static/
  • (可选)web.xmlsrc/main/webapp/WEB-INF/(如需传统 Servlet 配置)

4.编写 SpringBootServletInitializer 子类

外部 Servlet 容器启动时,不会直接执行 Spring Boot 主程序的main方法,需通过SpringBootServletInitializer子类初始化 Spring 应用。

在项目中创建该子类,重写configure方法,指定 Spring Boot 主程序类:

// 必须继承SpringBootServletInitializer
public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        // 传入Spring Boot主程序类(替换为你的主类名)
        return application.sources(SpringBoot1118Application.class);
    }
}

5.部署Tomcat

6.启动服务器

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐