当前位置: 首页 > news >正文

SpringBoot 升级内嵌Tomcat

SpringBoot 更新 Tomcat

最近公司的一个老项目需要升级下Tomcat,由于这个项目我完全没有参与,所以一开始我以为是一个老的Tomcat项目,升级它的Tomcat依赖或者是Tomcat容器镜像,后面发现是一个SpringBoot项目,升级的是SpringBoot内置的Tomcat。

这样的升级可以保证项目最小变动的情况下,将一个不安全版本的内部依赖升级成安全版本的内置依赖,还是比较有用的,因此在这里做一下记录。

我这里采用的是屏蔽旧的依赖,然后手动写dependency的方式:

  1. 首先找到在Maven依赖文件中找到SpringBoot-starter-web:
  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

如果你要升级的是其他的内置依赖,可以先在右侧Maven-Dependency中找到这个依赖,以确定该依赖是在哪个包下面的,然后进行如下操作即可。

  1. 使用<exclusion>标签屏蔽内置的旧的Tomcat依赖
 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId></exclusion><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId></exclusion><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-websocket</artifactId></exclusion><exclusion><groupId>org.apache.tomcat</groupId><artifactId>tomcat-annotations-api</artifactId></exclusion></exclusions></dependency>

进行到这一步骤,再次点到Maven-依赖中查看SpringBoot-Starter-Web下面查看,原来的Tomcat已经没有了。

  1. 通过dependency标签引入新的Tomcat依赖
<properties><java.version>1.8</java.version><tomcat.version>9.0.63</tomcat.version>
</properties>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId></exclusion><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId></exclusion><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-websocket</artifactId></exclusion><exclusion><groupId>org.apache.tomcat</groupId><artifactId>tomcat-annotations-api</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>${tomcat.version}</version><exclusions><exclusion><groupId>org.apache.tomcat</groupId><artifactId>tomcat-annotations-api</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-annotations-api</artifactId><version>${tomcat.version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId><version>${tomcat.version}</version></dependency><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-websocket</artifactId><version>${tomcat.version}</version><exclusions><exclusion><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies>

新的依赖引入成功,启动一下项目试一下:

启动成功!更新完成!

一览全貌:

参考文章:【CDSN@徐徐长安 | Spring Boot之如何升级内嵌tomcat版本】

相关文章:

SpringBoot 升级内嵌Tomcat

SpringBoot 更新 Tomcat 最近公司的一个老项目需要升级下Tomcat&#xff0c;由于这个项目我完全没有参与&#xff0c;所以一开始我以为是一个老的Tomcat项目&#xff0c;升级它的Tomcat依赖或者是Tomcat容器镜像&#xff0c;后面发现是一个SpringBoot项目&#xff0c;升级的是…...

react搭建在线编辑html的站点——引入grapes实现在线拖拉拽编辑html

文章目录 ⭐前言⭐搭建react ts项目⭐引入grapes 插件⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享关于react搭建在线编辑html的站点。 react 发展历史 React是由Facebook开发的一种JavaScript库&#xff0c;用于构建用户界面。React最初发布于2013年&…...

Nginx反向代理服务配置和负载均衡配置

nginx反向代理服务配置 node1&#xff1a;128 node2&#xff1a;135 node3&#xff1a;130 node4&#xff1a;132 node2、node3、node4已安装nginx nginx安装可查看https://blog.csdn.net/HealerCCX/article/details/132089836?spm1001.2014.3001.5502 [rootnode3 ~]# yum i…...

react钩子函数理解

React钩子&#xff08;Hooks&#xff09;是React 16.8版本引入的一种特性&#xff0c;用于在无需编写类组件的情况下&#xff0c;在函数组件中添加状态管理和其他React特性。React钩子解决了函数组件在处理状态、副作用和代码复用方面的一些问题&#xff0c;使得代码更加清晰、…...

医疗保健中的 NLP:实体链接

一、说明 HEalthcare和生命科学行业产生大量数据&#xff0c;这些数据是由合规性和监管要求&#xff0c;记录保存&#xff0c;研究论文等驱动的。但随着数据量的增加&#xff0c;搜索用于研究目的的必要文件和文章以及数据结构成为一个更加复杂和耗时的过程。例如&#xff0c;如…...

java编程规范

一、时间格式为什么有大写有小写呢&#xff1f; new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");为了区分月份和分钟&#xff0c;用大写M代表月份&#xff0c;小写m代表分钟 而大写的H代表24小时制&#xff0c;小写h代表12小时制 二、下面的程序判断等值的方式&…...

合宙Air724UG LuatOS-Air script lib API--sim

sim Table of Contents sim sim.getIccid() sim.getImsi() sim.getMcc() sim.getMnc() sim.getStatus() sim.setQueryNumber(flag) sim.getNumber() sim.setId(id, cbFnc) sim.getId() sim 模块功能&#xff1a;查询sim卡状态、iccid、imsi、mcc、mnc sim.getIccid() 获取sim卡…...

【网络基础实战之路】基于三个分公司的内网搭建并连接运营商的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS&#xff1a;本要求基于…...

(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建

前言&#xff1a;本文主要介绍在企业使用Python搭建接口自动化测试框架&#xff0c;数据驱动读取excel表里的数据&#xff0c;和数据库方面的交互&#xff0c;包括关系型数据库Mysql和非关系型数据库MongDB&#xff0c;连接数据库&#xff0c;读取数据库中数据&#xff0c;最后…...

实现vuex数据持久化处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 前言&#xff1a; 方案一 localStorage 介绍 值 示例 JSON.stringify() 介绍 语法 参数 返…...

Vue-系统登录进入首页后禁用浏览器返回键

解决方法 mounted() {history.pushState(null, null, document.URL)window.addEventListener(popstate, this.goBack, false) }, destroyed() {// 清除popstate事件 否则会影响到其他页面window.removeEventListener(popstate, this.goBack, false) }, methods: {goBack() {hi…...

Hadoop理论及实践-HDFS的Namenode及Datanode(参考Hadoop官网)

HDFS有什么特点&#xff0c;被设计做什么 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。有一下几个特点&#xff1a; HDFS是一个高度容错性的系统&#xff0c;具有高容错、高可靠性、高扩展性的特点&#xff0c;适合部…...

第四十九天

●兼容性测试&#xff1a;主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行。 •兼容测试测什么&#xff1f; Android碎片化严重&#xff0c;每一款游戏/应用在上线之前&#xff0c;都会做一轮覆盖一定机型量的兼容性测试。 在产品面对海量用户之前&#xff0…...

ArcGIS Pro简介下载安装地址

ArcGIS Pro简介 ArcGIS Pro是一款功能强大的地理信息系统&#xff08;GIS&#xff09;软件&#xff0c;由Esri开发。它为用户提供了一种直观、灵活且高效的方式来处理、分析和可视化地理数据。ArcGIS Pro具有现代化的用户界面和工作流程&#xff0c;使用户能够更好地利用地理信…...

MySQL 存储过程、函数、触发器、事件

​ 目录 存储过程 创建存储过程 调用存储过程 查看存储过程 删除存储过程 进阶 变量 if条件判断 传递参数 case结构 while循环 repeat结构 loop语句 leave语句 游标/光标 存储函数 触发器 创建触发器 删除触发器 查看触发器 事件 查看事件调度器是否开启…...

【LeetCode】121. 买卖股票的最佳时机 -

这里写自定义目录标题 2023-8-9 19:25:01 121. 买卖股票的最佳时机 2023-8-9 19:25:01 我也是一次性遍历。 自己感觉是用两个指针来做的。 第一天&#xff08;x 1&#xff09; 的时候就已经买入了&#xff0c;假定某y天 比第x天 便宜 或 相等&#xff0c;那么我就应当是第…...

解决Vue+Element-UI 进行From表单校验时出现了英文提示问题

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 问题描述 在使用form表单时&#xff0c;往往会对表单字段进行校验&#xff0c;字段为必填项时会添加required属性&#xff0c;此时自定义rules规则…...

cpolar内网穿透的安装

群晖6.X安装cpolar内网穿透 文章目录 群晖6.X安装cpolar内网穿透前言1. 下载cpolar的群晖套件1.1 打开群晖套件中心1.2 选择“手动安装”1.3 选择下载cpolar套件位置 2. 打开cpolar的Web-UI界面3. 注册会员 前言 随着硬件设备和软件技术的发展&#xff0c;以及数据量的发福暴涨…...

OPENCV C++(十)gramm矫正+直方图均衡化

两者都是只对单通道使用&#xff0c;对多通道的话 就需要分离通道处理再合并通道 两种方法&#xff0c;第一个要运算次数太多了&#xff0c;第二个只需要查表 伽马矫正函数&#xff0c;这里用第二种方法&#xff0c;且写法有点高级 int gammaCorrection(cv::Mat srcMat, cv::…...

并发——ThreadPoolExecutor 类简单介绍

文章目录 1 ThreadPoolExecutor 类分析2 推荐使用 ThreadPoolExecutor 构造函数创建线程池 线程池实现类 ThreadPoolExecutor 是 Executor 框架最核心的类。 1 ThreadPoolExecutor 类分析 ThreadPoolExecutor 类中提供的四个构造方法。我们来看最长的那个&#xff0c;其余三个…...

中文新闻文本分类实战:从 TextCNN → BiLSTM → BERT 三档方案对比(附完整代码)

任务&#xff1a;中文新闻文本分类&#xff08;如 THUCNews&#xff0c;10/14 类&#xff09; 目标&#xff1a;给出可直接复现的三种主流方案&#xff0c;实现 对比1. 数据准备 以 THUCNews 为例&#xff08;每行&#xff1a;label \t text&#xff09; import torch from to…...

手把手教你用Docker部署Crawl4AI服务,打造一个随时可用的AI爬虫API

从零构建企业级AI爬虫服务&#xff1a;基于Docker的Crawl4AI全栈部署指南 当你的Python脚本成功运行Crawl4AI爬取第一个网页时&#xff0c;这只是数据采集长征的第一步。真正的挑战在于&#xff1a;如何让这个脚本变成团队随时可用的服务&#xff1f;如何确保它在凌晨三点依然稳…...

电子信息保研面试真题库:钢琴爱好竟成加分项?附5类必问专业课速记清单

电子信息保研面试突围指南&#xff1a;从钢琴键到霍夫曼编码的跨界应答策略 当钢琴的黑白键遇上通信原理的二进制编码&#xff0c;保研面试的考场便成了跨界思维的最佳秀场。去年华南某顶尖院校电子系的面试现场&#xff0c;一位考生用肖邦《夜曲》的节奏变化类比数字信号采样定…...

三星电机完成SAP S/4HANA云ERP切换:以一体化数据平台支撑实时经营决策

三星电机近日宣布&#xff0c;已完成基于 SAP S/4HANA 的新一代 ERP 系统部署&#xff0c;并正式进入全面运营阶段。这次升级的核心意义&#xff0c;并不只是把旧 ERP 换成新系统&#xff0c;而是借此打通企业内部长期分散的数据体系&#xff0c;将原本分别存在于 ERP、MES 和 …...

PyMICAPS:气象工作者的终极Python可视化神器,让你的数据分析效率提升300%

PyMICAPS&#xff1a;气象工作者的终极Python可视化神器&#xff0c;让你的数据分析效率提升300% 【免费下载链接】PyMICAPS 气象数据可视化&#xff0c;用matplotlib和basemap绘制micaps数据 项目地址: https://gitcode.com/gh_mirrors/py/PyMICAPS 还在为复杂的气象数…...

别再只调参了!用Python给CFD/CAE仿真结果加个‘AI修正器’,精度提升看得见

用Python构建CFD/CAE仿真AI修正器的工程实践指南 在工程仿真领域&#xff0c;我们常常遇到一个令人头疼的问题&#xff1a;经过精心设置的CFD/CAE仿真结果&#xff0c;与实验数据之间总存在一条难以跨越的"误差鸿沟"。传统解决方案往往是反复调整网格、修改参数或更换…...

Spring Cloud服务熔断与降级

咱们今天不讲童话&#xff0c;咱们讲“系统保命学”。在微服务架构里&#xff0c;服务之间就像是一群互相借钱的酒肉朋友。平时你好我好大家好&#xff0c;一旦有个“朋友”&#xff08;服务A&#xff09;破产了&#xff08;挂了&#xff09;或者赖账&#xff08;超时&#xff…...

AI开发-python-langchain框架(--并行流程 )谀

如果有多个供应商&#xff0c;你也可以使用 [[CC-Switch]] 来可视化管理这些API key&#xff0c;以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.…...

Java Iterator详解

Java Iterator详解 概述 Java的Iterator接口是Java集合框架中用于迭代(遍历)集合对象的一个接口。它提供了一种方式来遍历集合中的元素,而不需要暴露集合的内部结构。Iterator接口是Java集合框架中非常重要的一部分,它被广泛用于各种数据结构的遍历操作。 Iterator接口的…...

ROS机器人开发避坑指南:搞定PC、树莓派与STM32的三角通信(含完整代码与配置)

ROS多设备通信实战&#xff1a;PC、树莓派与STM32的高效协同架构设计 在机器人开发领域&#xff0c;ROS&#xff08;Robot Operating System&#xff09;已成为事实上的标准框架。但当我们需要将不同架构的计算设备&#xff08;如x86的PC、ARM的树莓派和嵌入式STM32&#xff09…...