网站首页 > 文章精选 正文
最近 log4j2 的核弹级漏洞席卷了大部分互联网公司,升级版本成了这两周的核心任务。对于要升级到什么版本,最新版本 2.16.0 是最佳选择。那么如何快速升级,之前也给出了 Spring Boot项目升级版本的最简方法 。
大家只需要使用这样的简单配置,就可以把log4j2一系列包的版本都升级了。
如果这种方法不行,注意加了配置之后要reload下。另外,如果你不是Spring Boot项目,或者是通过其他方式引入的log4j2,那么需要单独处理,或者在你项目的根依赖里,直接写上log4j2的依赖并设置版本为2.16.0,强制覆盖其他地方引入的版本。
上面的配置很简单,但还是有读者不清楚为什么这样就可以了:
所以,今天就具体给大家说一下这个配置的原理。
一步步了解为什么
下面我会以读代码寻找源头的方式,带你一步步了解这个配置。希望你通过本文除了知道这个问题是为什么,还能学会这种自己探究问题的方法。
第一步:观察下你的 pom.xml ,有没有发现很多依赖包括非Spring Boot Starter的依赖都没有写version?
既然没version也能跑,那一定有地方定义了!把焦点转移到parent上,似乎就这里有version!
第二步:进一步查看
spring-boot-starter-parent 的内容
进入后可以看到类似下面的 xml 配置,其中主要包含的内容是与build相关的,而非依赖信息。
第三步:继续观察
spring-boot-starter-parent 中的信息中,可以看到,它还有一个parent,好小子藏那么深!那么就继续深入查看 spring-boot-dependencies 的内容:
进入后,我们就可以看到重点了,该Spring Boot版本下各个组件的版本参数就在这里:
搜索 log4j2 ,可以发现,这个版本下默认使用的是 2.14.1 :
继续往下搜,在 dependencyManagement 节点下,可以看到各个依赖的版本定义就是引用了上面配置的各个 properties :
所以,当我们在自己的Spring Boot中配置对应的 properties ,就可以覆盖parent中的 properties ,并实现版本的更新。
猜你喜欢
- 2025-06-13 SpringBoot权限炸场!动态鉴权提速10倍吊打RBAC(附工具源码)
- 2025-06-13 Spring Boot 3.4 新特性实战解析(springboot最新)
- 2025-06-13 SpringBoot 2.7.10、3.0.5 发布,修复 DoS漏洞
- 2025-06-13 springboot(二十八)stomp在spring5.3以上报跨域问题的处理
- 2025-06-13 还在为 Spring Boot3 动态配置发愁?一文教你轻松搞定!
- 2025-06-13 SpringBoot几种动态修改配置的方法
- 2025-06-13 快来看看SpringBoot2.2发行版,你能用到哪些新特性?
- 2025-06-13 Spring Boot3 应用打包成 Docker 镜像全攻略
- 2025-06-13 Spring Boot3 动态配置实现方案全解析,你掌握了吗?
- 2025-06-13 Spring Framework 6.2 和 Spring Boot 3.4 为 2025 年新一代做好准备
- 最近发表
-
- 面试中常被问到的Hash表,你了解吗
- JAVA面试考点:一文搞懂一致性Hash的原理和实现
- 一次性搞清楚equals和hashCode(hashcode() 与equals()区别,简单说明)
- HashMap.Key的故事:Key为什么出现Hash碰撞及冲突呢?
- hash冲突的几种解决方案对比(hash冲突的解决方式)
- 游戏王LN 无头骑士(无头骑士cv)
- Linux ln、unlink命令用法(linux link命令详解)
- n和l分不清矫正发音方法,这三步就够了
- golang引用私有gitlab项目代码(golang引入当前包下的文件)
- Instamic:录音领域中的 GoPro,让你想录就录,随心所欲
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)