Spring Boot嵌入容器或外部容器中的war文件用于生产

作者:编程家 分类: spring 时间:2025-12-19

使用Spring Boot可以非常方便地构建独立的、可执行的生产级别的应用程序。而在生产环境中,我们可以选择将Spring Boot应用程序以war文件的形式部署在嵌入式容器中,也可以选择将war文件部署在外部容器中。本文将介绍如何使用Spring Boot部署war文件,并给出相应的代码示例。

使用外部容器还是嵌入式容器

在部署Spring Boot应用程序时,我们可以选择将应用程序打包成war文件,然后将war文件部署在外部的Servlet容器中,比如Tomcat、Jetty等。也可以选择使用Spring Boot提供的嵌入式容器,直接运行应用程序。两种方式各有优劣,具体选择取决于实际需求。

使用嵌入式容器部署war文件

如果我们选择使用嵌入式容器部署war文件,首先需要将Spring Boot应用程序配置为war类型的项目。在pom.xml文件中,将打包方式设置为war:

xml

war

然后,需要在应用程序的入口类上添加`SpringBootServletInitializer`类的继承,这样Spring Boot就会自动将应用程序部署为war文件:

java

@SpringBootApplication

public class Application extends SpringBootServletInitializer {

// 程序入口

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

return builder.sources(Application.class);

}

}

这样,我们就可以将生成的war文件部署在任何支持Servlet规范的嵌入式容器中了。

使用外部容器部署war文件

如果我们选择使用外部容器部署war文件,首先需要将Spring Boot应用程序配置为war类型的项目,同样的,在pom.xml文件中将打包方式设置为war。

然后,需要将嵌入式容器的依赖修改为provided,这样在打包时就不会将嵌入式容器打包进war文件中:

xml

org.springframework.boot

spring-boot-starter-web

provided

最后,需要在应用程序的入口类上添加`SpringBootServletInitializer`类的继承,这样Spring Boot就会自动将应用程序部署为war文件:

java

@SpringBootApplication

public class Application extends SpringBootServletInitializer {

// 程序入口

public static void main(String[] args) {

SpringApplication.run(Application.class, args);

}

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

return builder.sources(Application.class);

}

}

以上配置完成后,我们可以将生成的war文件部署在任何支持Servlet规范的外部容器中。

使用命令行运行Spring Boot应用程序

除了将war文件部署在容器中,我们还可以使用命令行直接运行Spring Boot应用程序。我们只需要在项目根目录下执行以下命令:

bash

mvn spring-boot:run

这样,Spring Boot应用程序就会在嵌入式容器中启动,并监听默认的端口号。

本文介绍了如何使用Spring Boot将应用程序部署为war文件,并分别在嵌入式容器和外部容器中运行。无论是选择嵌入式容器还是外部容器,都可以根据实际需求进行选择。同时,我们还介绍了如何使用命令行直接运行Spring Boot应用程序。通过这些方法,我们可以方便地将Spring Boot应用程序部署到生产环境中,并进行灵活的运维管理。

希望本文对大家理解如何在生产环境中使用Spring Boot部署war文件有所帮助。如果有任何疑问,欢迎留言讨论。

代码示例可在以下链接中找到:[Spring Boot War Deployment Example](https://github.com/spring-projects/spring-boot/tree/main/spring-boot-samples/spring-boot-sample-web-war)