在項目中遇到一個很奇怪的問題,寫了一個SpringContextUtil工具類來獲取applicationContext,初始化的時候斷點來看的確是初始化了,applicationContext對象不為空,但是在一個監聽類里面去獲取的時候一直報空指針,一查原來是applicationContext對象為空,由於我是接單點登錄,在A項目里面已經實現了,在B項目里面同樣的代碼卻無法獲取到?!檢查了無數遍代碼后,我確信代碼是沒問題的,問題就在兩個項目的差別上。
首先我懷疑是項目結構導致springboot沒有掃描到包,然后一陣更換代碼的目錄結構還是沒有問題,偶然在網上看到一個貼子https://blog.csdn.net/a1091662876/article/details/93873626,剛好我也是接單點登錄,這位大佬給我很好的啟發,springboot的熱部署導致類加載器不一致,導致獲取不到applicationContext實例,關閉熱部署一測,果然通了;然后返回查看A項目,果然沒開熱部署;非常感謝這位大佬的帖子;
這里我的處理方法是直接關閉熱部署,如果需要修改熱部署的類加載器可以參考一下這位大佬的帖子;
參考文檔:https://blog.csdn.net/a1091662876/article/details/93873626