组件漏洞修复---修改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是这样,其他组件也是适用的。

相关文章
|
3月前
|
监控 Java 应用服务中间件
Spring Boot整合Tomcat底层源码分析
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置和起步依赖等特性,大大简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是其与Tomcat的整合。
85 1
|
4月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
354 2
|
14天前
|
监控 前端开发 Java
SpringBoot集成Tomcat、DispatcherServlet
通过这些配置,您可以充分利用 Spring Boot 内置的功能,快速构建和优化您的 Web 应用。
45 21
|
26天前
|
前端开发 JavaScript Java
springboot图书馆管理系统前后端分离版本
springboot图书馆管理系统前后端分离版本
39 12
|
6月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
4月前
|
druid Java Maven
|
4月前
|
Java Maven Spring
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
这篇文章介绍了在IntelliJ IDEA社区版中创建Spring Boot项目的三种方法,特别强调了第三种方法的详细步骤。
2770 0
springboot学习一:idea社区版本创建springboot项目的三种方式(第三种为主)
|
5月前
|
安全 Java 应用服务中间件
Windows版本的Tomcat无法启动,如何处理?
Windows版本的Tomcat无法启动,如何处理?
412 14
|
5月前
|
前端开发 Java Spring
【非降版本解决】高版本Spring boot Swagger 报错解决方案
【非降版本解决】高版本Spring boot Swagger 报错解决方案
233 2
|
4月前
|
Java Maven Spring
查看springboot版本支持最高的java版本
截至最近更新,Spring Boot 3.0及以上版本支持的最高Java版本为Java 17。鉴于技术的不断演进,建议直接参考Spring Boot的官方文档获取最准确的支持信息,因为这些版本兼容性可能会随着新版本的发布而有所变化。选择与你的Spring Boot版本相匹配的Java版本,可以确保充分利用框架特性,同时保证项目的稳定性和前瞻性。
162 0