最近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
,並實現版本的更新。
好了,今天的小知識你Get到了嗎?如果您學習過程中遇到困難?可以加入我們超高質量的Spring技術交流群,與優秀的人在一起,自己也會慢慢優秀起來!更多Spring Boot教程可以點選直達!,歡迎收藏與轉發支援!
歡迎關注我的公眾號:程式猿DD,分享其他地方看不到的知識與思考