news 2026/6/11 0:06:02

SpringBoot使用外置Tomcat

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot使用外置Tomcat

SpringBoot默认使用嵌入式Servlet容器(内置Tomcat)。

应用打成可执行的jar

原理:

jar包:执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的Servlet容器。

war包:启动服务器,服务器启动SpringBoot应用【SpringBootServletInitializer】,启动ioc容器。

如果SpringBoot想要使用外置Tomcat应如何操作呢?下面进行外置Tomcat的步骤演示:

第一步:创建Maven Web项目

第二步:将Maven Web项目修改为SpringBoot项目

1. 修改pom.xml文件

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.qcby</groupId> <artifactId>springboottomcat</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging><!-- 注意这里是war的打包方式 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <!-- Web依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除内置的Tomcat依赖 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 将嵌入式的Tomcat指定为provided --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐tomcat</artifactId> <scope>provided</scope> </dependency> <!-- 添加Servlet API依赖(provided表示打包时不包含,由外置容器提供) --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <!-- Spring Boot Maven插件,这是生成可执行jar的关键 --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

【2. 添加启动类,适配外置容器】

⭐⭐⭐注意:让启动类继承SpringBootServletInitializer并重写configure方法(这是外置容器启动SpringBoot应用的入口)

package com.qcby.springBootTomcat; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class springBootTomcat extends SpringBootServletInitializer{ // 内置容器启动入口(保留不影响,外置容器不会走这个方法) public static void main(String[] args) { SpringApplication.run(springBootTomcat.class,args); } // 外置容器启动入口:重写configure方法 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(springBootTomcat.class); } }

【3. 写一个测试接口】

@RestController public class HelloController { // 测试接口 @GetMapping("/hello") public String hello() { return "Hello, Tomcat!"; } }

第三步:配置外部Tomcat

第四步:

  1. 启动外部Tomcat
  2. 访问http://localhost:8080/hello

到次,配置外部Tomcat成功!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:40:25

例说FPGA:可直接用于工程项目的第一手经验【2.4】

第10章 工程实例8——电子点菜单设计 本章导读 本章的工程实例至少结合了第4、6、8、9章的内容,集成实现了一个“电子点菜单”的雏形,虽然还不能称得上真正意义上的“点菜单”,但是已经非常接近实际产品了,相信在聪明的读者手中这个雏形很快就能摆上“大雅之堂”。话说回…

作者头像 李华
网站建设 2026/6/10 18:39:27

2026-02-03 全国各地响应最快的 BT Tracker 服务器(电信版)

数据来源&#xff1a;https://bt.me88.top 序号Tracker 服务器地域网络响应(毫秒)1http://180.112.57.159:6969/announce江苏苏州电信72http://60.249.37.20:6969/announce广东东莞电信343http://211.75.205.188:6969/announce广东广州电信364udp://132.226.6.145:6969/announ…

作者头像 李华
网站建设 2026/5/24 0:06:13

上海计算机学会2月月赛丙组T3配对乘积题解

题解&#xff1a;查看数据范围发现&#xff0c;数据不是很大&#xff0c;所以采用二层循环来遍历每个数组进行交叉相乘的方式进行比较。找到最大值。乘积结果使用long long类型存储。代码如下&#xff1a;#include<iostream> using namespace std; int main(){long long …

作者头像 李华
网站建设 2026/6/10 20:05:53

<span class=“js_title_inner“>美国 TikTok 崩了!</span>

美国 TikTok 的全新运营方就本周末出现的服务故障发布了官方说明&#xff0c;同时表态正全力推进服务恢复工作。据 TikTok 方面披露&#xff0c;美国区域的服务从周日凌晨起出现持续性中断&#xff0c;背后诱因是电力供应故障。TikTok USDS 也正式发布声明称&#xff1a;“受美…

作者头像 李华
网站建设 2026/5/30 11:56:54

STM32L475定时器实验

配置定时器TIM2 配置项解释: Slave Mode: 正常情况下, TIM2的启动通过代码 HAL_TIM_Base_Start() 来控制, 但是开启Slave Mode之后, TIM2的核心操作将由外部信号触发, 如另一个定时器, GPIO电平等等, 外部触发源通过Trigger Source 来配置 Prescaler(PSC - 16 bits value) 通过…

作者头像 李华