最近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
的内容【为什么加上配置就可以更新log4j2的版本()】
文章图片
进入后可以看到类似下面的
xml
配置,其中主要包含的内容是与build相关的,而非依赖信息。文章图片
第三步:继续观察
spring-boot-starter-parent
中的信息中,可以看到,它还有一个parent,好小子藏那么深!那么就继续深入查看spring-boot-dependencies
的内容:文章图片
进入后,我们就可以看到重点了,该Spring Boot版本下各个组件的版本参数就在这里:
文章图片
搜索
log4j2
,可以发现,这个版本下默认使用的是2.14.1
:文章图片
继续往下搜,在
dependencyManagement
节点下,可以看到各个依赖的版本定义就是引用了上面配置的各个properties
:文章图片
所以,当我们在自己的Spring Boot中配置对应的
properties
,就可以覆盖parent中的properties
,并实现版本的更新。好了,今天的小知识你Get到了吗?如果您学习过程中遇到困难?可以加入我们超高质量的Spring技术交流群,与优秀的人在一起,自己也会慢慢优秀起来!更多Spring Boot教程可以点击直达!,欢迎收藏与转发支持!
欢迎关注我的公众号:程序猿DD,分享其他地方看不到的知识与思考
推荐阅读
- VS Code 2022路线图(大量Spring Boot优化提上日程!难道是被JB Code吓到了())
- Spring Boot 3.0.0 发布第一个里程碑版本M1,你的 Java 升到17 了吗()
- 稀疏数组与数组的关系与转化
- Synchronized的底层实现原理(看这篇就够了)
- main函数你到底知道多少
- 比postman更好用的API调试工具?apifox,永远滴神
- Dubbo拓展点加载机制
- Spring boot 2.0的Redis缓存应用
- 保姆级教程,终于搞懂脏读、幻读和不可重复读了!
- Spring Boot 2 中的默认日志管理与 Logback 配置详解