spring框架中普通類(工具類)調用service

今天,公司要求我在springboot框架的項目中添加一個日誌記錄的操做,大體實現方案就是提供一個日誌工具類,而後將controller層中的數據,經過調用這個工具類提供的方法寫入數據庫;spring

該工具類方法的主要實現邏輯:經過調用service,而後再經過mapper操做將信息寫入數據庫。數據庫

要解決的難點:如何在工具類中調用service,而後將寫入數據庫。springboot

爲了更好的描述問題,先將部分主要代碼提供給你們。app

Logger就是工具類,下方代碼是在Controller中調用工具類的方法。 框架

下方是Logger類中注入ServiceImpl的主要代碼 工具

相信這一步,你們都已經作到了,博主高高興興的便去運行代碼了,結果報空指針異常!!!!,涼了,涼了,接下來博主便開始debug,發現上面的manageServiceImpl居然是null!!學習

問題發現了:上方的實現根本沒有讓ServiceImpl注入進來 啊!debug

而後機智的樓主想到,既然你是null,那好,我手動給你建立一個,便new了一個ManageService對象,再去進行數據庫操做,結果並不樂觀,依然空指針異常!!!指針

下一步,好,我找度娘求助。解決辦法真是讓人眼花繚亂啊,最多的解決方法就是以下所示: 日誌

博主尖叫一聲,這TM什麼雞雞,歷來沒有的玩法,評論里居然一片稱讚。。。抱着試試的態度,結果依然涼涼。

腦子裏如今都是涼涼,可是博主就是有一股拼的勁頭,不搞明白決不罷休,俗話說的好,萬變不離其宗,博主決定從新學習spring容器管理對象的基礎知識,終於。。。。。找到了緣由。

先列出解決方案,只須要在以前的代碼上改動一點便可:

在以前的Controller層中注入工具類對象:

注意,注意,最最主要的就是這一點了!!

必定必定要用注入進來的工具類對象,去調用工具類的方法!

好了,問題完美解決!!!

下面分析緣由:以前博主調用工具類方法時,是手動new出來的工具類,正是由於是手動new出來的對象,因此不歸spring容器管理,繼而,這個對象裏面的成員屬性(即serviceImpl)天然不能注入進來。而當我使用注入進來的工具類對象時,此時對象是由spring容器管理的,因此此對象中的成員屬性(即serviceImpl)是能夠注入進來的,繼而完美!!!

相關文章
相關標籤/搜索