组件漏洞修复---修改SpringBoot内置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就是在这个启动器里面。
在这里插入图片描述
我们ctrl+单机,点击这个启动器就可以查看这个启动器都引入了那些依赖,如下图:
在这里插入图片描述
,点击进入后,我们发现有很多依赖,这是我们ctrl+F,搜索tomcat,就可以发现这里引入了这个子启动器。
在这里插入图片描述
看到这里我们其实就已经找到这个内嵌的tomcat了,我们点击进去可以看到引入的tomcat的版本,如下图,图中标红的就是我们要找的内嵌的Tomcat版本了。
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/m0_46897923/article/details/114901174