实践指南:如何将 SpringBoot 项目无缝部署到 Tomcat 服务器
创始人
2025-01-19 03:03:01
0

序言

SpringBoot 是一个用来简化 Spring 应用初始搭建以及开发过程的框架,我们可以通过内置的 Tomcat 容器来轻松地运行我们的应用。但在生产环境中,我们可能需要将应用部署到独立的 Tomcat 服务器上。本文给大家介绍 SpringBoot 项目部署到独立 Tomcat 服务器的操作流程。

一、修改打包方式

首先,需要将 Spring Boot 的打包方式从 jar 修改为 war。打开 pom.xml 文件,找到 标签,将其内容改为 war。

war 

二、排除 tomcat 依赖

排除 tomcat 依赖的方式有许多,我们可以采用以下简单的方式:直接变更 tomcat 的依赖范围为 provided

   org.springframework.boot   spring-boot-starter-tomcat   provided  

三、配置 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);     } } 
  1. Servlet 容器加载机制:在 Java Web 开发中,Servlet 容器负责加载和管理 Servlet。Servlet 容器会在启动时读取 web.xml 文件(或者使用 Servlet 3.0 注解)来获取应用程序的配置信息,并加载相应的 Servlet。对于 SpringBoot 应用程序来说,它也是一个 Servlet,需要被加载到 Servlet 容器中才能运行。
  2. SpringBoot 启动类:SpringBoot 应用程序通常有一个主类,其中包含 main 方法。这个主类使用 SpringBoot 的 @SpringBootApplication 注解标记,它告诉 SpringBoot 应用程序的入口点。在内嵌 Tomcat 的情况下, SpringBoot 会自动检测并启动应用程序,而在外部 Tomcat 中,我们需要告诉 Tomcat 如何加载 SpringBoot 应用程序。
  3. SpringBootServletInitializer 作用:SpringBootServletInitializer 是 SpringBoot 提供的一个抽象类,用于支持将 SpringBoot 应用程序部署到外部 Servlet 容器中。通过继承 SpringBootServletInitializer 类并重写其 configure 方法,我们可以告诉外部 Servlet 容器如何初始化 SpringBoot 应用程序,并指定 SpringBoot 应用程序的主类。
  4. configure 方法重写:在 configure 方法中,我们需要调用 SpringApplicationBuilder 的 sources 方法并传递 SpringBoot 应用程序的主类,以告诉外部 Servlet 容器从哪里加载 SpringBoot 应用程序。SpringBoot 会在部署到外部 Servlet 容器时自动检测到这个 configure 方法,并使用它来初始化应用程序。

四、构建 war 包

执行 mvn clean package 命令完成打包

mvn clean package 

image.png

五、部署到 Tomcat

image.png

推荐阅读

  1. Docker Compose:简化多容器应用部署
  2. cURL:命令行下的网络工具
  3. RabbitMQ(Docker 单机部署)
  4. 深入理解 Java 并发:AbstractQueuedSynchronizer 源码分析
  5. 深入了解 Arthas:Java 应用程序诊断利器

相关内容

热门资讯

不少玩家反映!欢乐茶馆挂有没有... 不少玩家反映!欢乐茶馆挂有没有(辅助)总是真的是有辅助神器(真的有挂)1、欢乐茶馆挂有没有免费脚本咨...
第6分钟辅助!中至余干小程序辅... 第6分钟辅助!中至余干小程序辅助安装,真是存在有辅助脚本(有挂方式)该软件可以轻松地帮助玩家将中至余...
此事备受玩家关注!美猴王大厅怎... 此事备受玩家关注!美猴王大厅怎么修改数据(辅助)本来真的是有辅助器(竟然有挂)亲,关键说明,美猴王大...
1分钟辅助!福建天天开心福州器... 1分钟辅助!福建天天开心福州器真的假的,其实真的有辅助工具(证实有挂)1、进入游戏-大厅左侧-新手福...
目前来看!丽水双扣茶苑脚本(辅... 目前来看!丽水双扣茶苑脚本(辅助)本来是真的有辅助工具(果真有挂)1、许多玩家不知道丽水双扣茶苑脚本...
十分钟辅助!四川途游辅助软件下... 十分钟辅助!四川途游辅助软件下载,总是是真的有辅助器(有挂教程)1、四川途游辅助软件下载免费辅助多个...
于此同时!上饶打炸攻略(辅助)... 于此同时!上饶打炸攻略(辅助)一直真的是有辅助工具(有挂秘籍)1、玩家可以在上饶打炸攻略线上大神俱乐...
5分钟辅助!温州茶苑手机辅助器... 5分钟辅助!温州茶苑手机辅助器,一直真的有辅助脚本(有挂透视)温州茶苑手机辅助器是不是有人用挂微扑克...
据权威媒体报道!雀神广东麻雀智... 据权威媒体报道!雀神广东麻雀智能科技贴吧(辅助)确实确实有辅助技巧(有挂方式)1、下载好雀神广东麻雀...
第5分钟辅助!微信小程序青龙大... 第5分钟辅助!微信小程序青龙大厅辅助,真是存在有辅助攻略(果真有挂)1、很好的工具软件,可以解锁游戏...