不到断气不罢休 发表于 2024-8-20 02:58:12

实践指南:如何将 SpringBoot 项目无缝部署到 Tomcat 服务器

序言

SpringBoot 是一个用来简化 Spring 应用初始搭建以及开发过程的框架,我们可以通过内置的 Tomcat 容器来轻松地运行我们的应用。但在生产环境中,我们大概必要将应用部署到独立的 Tomcat 服务器上。本文给各人介绍 SpringBoot 项目部署到独立 Tomcat 服务器的利用流程。
一、修改打包方式

起首,必要将 Spring Boot 的打包方式从 jar 修改为 war。打开 pom.xml 文件,找到 标签,将其内容改为 war。
<packaging>war</packaging>
二、清除 tomcat 依赖

清除 tomcat 依赖的方式有许多,我们可以采用以下简单的方式:直接变更 tomcat 的依赖范围为 provided
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
三、设置 SpringBoot 启动类

// SpringBoot 的启动类
@SpringBootApplication
public class App {
    public static void main(String[] args) {
      SpringApplication.run(App.class, args);
    }
}

// 自定义 ServletInitializer
public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
      return builder.sources(App.class);
    }
}

[*]Servlet 容器加载机制:在 Java Web 开发中,Servlet 容器负责加载和管理 Servlet。Servlet 容器会在启动时读取 web.xml 文件(或者使用 Servlet 3.0 注解)来获取应用程序的设置信息,并加载相应的 Servlet。对于 SpringBoot 应用程序来说,它也是一个 Servlet,必要被加载到 Servlet 容器中才气运行。
[*]SpringBoot 启动类:SpringBoot 应用程序通常有一个主类,此中包罗 main 方法。这个主类使用 SpringBoot 的 @SpringBootApplication 注解标记,它告诉 SpringBoot 应用程序的入口点。在内嵌 Tomcat 的情况下, SpringBoot 会自动检测并启动应用程序,而在外部 Tomcat 中,我们必要告诉 Tomcat 如何加载 SpringBoot 应用程序。
[*]SpringBootServletInitializer 作用:SpringBootServletInitializer 是 SpringBoot 提供的一个抽象类,用于支持将 SpringBoot 应用程序部署到外部 Servlet 容器中。通过继续 SpringBootServletInitializer 类并重写其 configure 方法,我们可以告诉外部 Servlet 容器如何初始化 SpringBoot 应用程序,并指定 SpringBoot 应用程序的主类。
[*]configure 方法重写:在 configure 方法中,我们必要调用 SpringApplicationBuilder 的 sources 方法并通报 SpringBoot 应用程序的主类,以告诉外部 Servlet 容器从哪里加载 SpringBoot 应用程序。SpringBoot 会在部署到外部 Servlet 容器时自动检测到这个 configure 方法,并使用它来初始化应用程序。
四、构建 war 包

执行 mvn clean package
命令完成打包
mvn clean package
https://img-blog.csdnimg.cn/img_convert/734f068127bfc6d3e9631bea2a9851df.png
五、部署到 Tomcat

https://img-blog.csdnimg.cn/img_convert/69b1ae37667d475f2b5d8343454581a2.png
推荐阅读


[*]Docker Compose:简化多容器应用部署
[*]cURL:命令行下的网络工具
[*]RabbitMQ(Docker 单机部署)
[*]深入明白 Java 并发:AbstractQueuedSynchronizer 源码分析
[*]深入相识 Arthas:Java 应用程序诊断利器

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 实践指南:如何将 SpringBoot 项目无缝部署到 Tomcat 服务器