Filter使用@Autowired注解失敗解決

在控制器使用@Autowired進(jìn)行自動(dòng)注入的時(shí)候我沒有發(fā)現(xiàn)過(guò)這個(gè)問(wèn)題,但是今天想做一個(gè)自動(dòng)登錄的過(guò)濾器的時(shí)候,控制臺(tái)報(bào)了錯(cuò)。原因是NULLPOINTEREXCEPTION異常,也就是空指針異常。于是我就debug了一下,發(fā)現(xiàn)這里的dao對(duì)象是空的,后來(lái)試了一下自動(dòng)注入service層的接口,還是null。


上網(wǎng)查了資料之后,發(fā)現(xiàn)web容器的初始化順序是按照Listener-filetr-servlet的順序進(jìn)行的,因?yàn)閐ispatcherServlet是在fileter之后才初始化,也就是這時(shí)候我們要自動(dòng)注入的bean才被初始化。所以,到這里我們就明白了,在我們進(jìn)行自動(dòng)注入的時(shí)候還沒有bean,因此會(huì)注入失敗。


但是使用ApplicationContext對(duì)象來(lái)獲取bean就行了,完美解決。


可以看到,這時(shí)的service和dao對(duì)象已經(jīng)不再是null。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容