组件漏洞修复---修改SpringBoot内置tomcat的版本号

简介: 安全反应Tomcat9.0.41存在安全漏洞,让将所有服务的Tomcat版本升级到9.0.44,我们都知道SpingBoot中是集成的有内置的Tomcat的,叫Embed-Tomcat,这个Tomcat和我们用于部署war包的Tomcat还是有有一些区别的,但是版本一直和Tomcat基本保持一致。

前言:



安全反应Tomcat9.0.41存在安全漏洞,让将所有服务的Tomcat版本升级到9.0.44,我们都知道


SpingBoot中是集成的有内置的Tomcat的,叫Embed-Tomcat,这个Tomcat和我们用于部署war包的Tomcat还是有有一些区别的,但是版本一直和Tomcat基本保持一致。


1.内置的Tomcat在哪



做web开发,有一个启动器是必须的,就是spring-boot-starter-web启动器,SpringBoot的内嵌Tomcat就是在这个启动器里面。


20210316211857250.png


我们ctrl+单机,点击这个启动器就可以查看这个启动器都引入了那些依赖,如下图:


20210316212041487.png


,点击进入后,我们发现有很多依赖,这是我们ctrl+F,搜索tomcat,就可以发现这里引入了这个子启动器。

20210316212202768.png

看到这里我们其实就已经找到这个内嵌的tomcat了,我们点击进去可以看到引入的tomcat的版本,如下图,图中标红的就是我们要找的内嵌的Tomcat版本了。

20210316212333736.png


2.怎么修改内嵌的Tomcat版本



1.方法一:

第一种方法,我们可以在引用web启动器spring-boot-starter-web的地方,排除这个spring-boot-stater-tomcat子启动器。然后在依赖中从新加入自己想要的内嵌版本,这样就可以实现更换SpringBoot内嵌Tomcat版本的目的了。注意这并不是一种推荐的解决方案,这其实是一种不明就里的解决方案。真正的省时省力的还是方法二。


2.方法二:

我们直接在定义版本号的地方声明Tomcat的版本号就可以,然后刷新依赖,就会将Tomcat的版本自动升级到想要的版本。

那么版本号在哪里定义的呢?注意如果你的项目是分布式项目,那么肯定有个最外层的parent项目,这个项目里通常会去定义各个子项目使用的各种组件的版本号,我们都是将版本号写在pom文件中的properties属性中,这样就可以统一管理组件的版本号了。如果你是单一项目,那么肯定就在你当前项目中去的pom文件中寻找这个版本号,有可能是在properties中定义这个版本,也有可能是在引入依赖的地方直接声明的。

我正在改动的这个项目是个分布式项目所以是定义在的最外层的父工程中


<properties>
  <tomcat.version>9.0.44</tomcat.version>
</properties>


3.总结



通过这个组件升级了解到了,我们升级内嵌的组件的版本号时,无需像方式一那样去排除内嵌的组件,然后再重新加入依赖,这样做其实是个笨方法,可以直接定义组件的版本号,这样就可以达到升级组件版本的目的了,不仅Tomcat是这样,其他组件也是适用的。

相关文章
|
4月前
|
监控 Java 应用服务中间件
Spring Boot整合Tomcat底层源码分析
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置和起步依赖等特性,大大简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是其与Tomcat的整合。
94 1
|
5月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
442 2
|
1月前
|
监控 前端开发 Java
SpringBoot集成Tomcat、DispatcherServlet
通过这些配置,您可以充分利用 Spring Boot 内置的功能,快速构建和优化您的 Web 应用。
72 21
|
7月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
7月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
6月前
|
安全 Java 应用服务中间件
Windows版本的Tomcat无法启动,如何处理?
Windows版本的Tomcat无法启动,如何处理?
499 14
|
7月前
|
SQL JavaScript 前端开发
vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
这篇文章详细介绍了如何在Vue.js中使用分页组件展示从数据库查询出来的数据,包括前端Vue页面的表格和分页组件代码,以及后端SpringBoot的控制层和SQL查询语句。
vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
|
6月前
|
缓存 监控 Java
造轮子能力大提升:基于SpringBoot打造高性能缓存组件
在快节奏的软件开发领域,"不重复造轮子" 常常被视为提高效率的金科玉律。然而,在某些特定场景下,定制化的高性能缓存组件却是提升系统性能、优化用户体验的关键。今天,我们将深入探讨如何利用SpringBoot框架,从零开始打造一款符合项目需求的高性能缓存组件,分享我在这一过程中的技术心得与学习体会。
95 6
|
9月前
|
NoSQL 前端开发 Java
技术笔记:springboot分布式锁组件spring
技术笔记:springboot分布式锁组件spring
80 1
|
9月前
|
Java API 数据安全/隐私保护
在Spring Boot中,过滤器(Filter)是一种非常有用的组件
在Spring Boot中,过滤器(Filter)是一种非常有用的组件
104 6