一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 關于SpringBoot攔截器中Bean無法注入的問題

關于SpringBoot攔截器中Bean無法注入的問題

2022-02-22 13:08那啥快看 Java教程

這兩天遇到SpringBoot攔截器中Bean無法注入問題。下面介紹關于SpringBoot攔截器中Bean無法注入的問題,感興趣的朋友一起看看吧

問題

這兩天遇到SpringBoot攔截器中Bean無法注入問題。下面介紹我的思考過程和解決過程:

1.由于其他bean在service,controller層注入一點問題也沒有,開始根本沒意識到Bean無法注入是在攔截器中無效的問題,一直在查找注解指定的包在哪里配置的,然而卻找不到配置,Springboot是用java類的形式加載配置的。在網絡的某個角落看到這樣的說法:

SpringBoot項目的Bean裝配默認規則是根據Application類所在的包位置從上往下掃描!
“Application類”是指SpringBoot項目入口類。這個類的位置很關鍵:
如果Application類所在的包為:com.boot.app,則只會掃描com.boot.app包及其所有子包,如果service或dao所在包不在com.boot.app及其子包下,則不會被掃描!
即,把Application類放到dao、service所在包的上級,com.boot.Application
知道這一點非常關鍵,不知道spring文檔里有沒有給出說明,如果不知道還真是無從解決。

我出問題的類確實在Application類子包下面,看來不是這方面問題。

2.開始意識到只是攔截器上會有這樣的問題,查詢原因應該是:

攔截器執行在自動bean初始化之前導致這個問題的。

web里各個元素的執行順序

在web.xml中各個元素的執行順序是這樣的,context-param-->listener-->filter-->servlet; 而攔截器是在Spring MVC中配置的,如果從整個項目中看,一個servlet請求的執行過程就變成了這樣context-param-->listener-->filter-->servlet-->interceptor(指的是攔截器),為什么攔截器是在servlet執行之后,因為攔截器本身就是在servlet內部的。

各個元素具體概念

context-param:就是一些需要初始化的配置,放入context-param中,從而被監聽器(這里特指org.springframework.web.context.ContextLoaderListener)監聽,然后加載;

監聽器(listener):就是對項目起到監聽的作用,它能感知到包括request(請求域),session(會話域)和applicaiton(應用程序)的初始化和屬性的變化;

過濾器(filter):就是對請求起到過濾的作用,它在監聽器之后,作用在servlet之前,對請求進行過濾;

servlet:就是對request和response進行處理的容器,它在filter之后執行,servlet其中的一部分就是controller層(標記為servlet_2),還包括渲染視圖層(標記為servlet_3)和進入controller之前系統的一些處理部分(servlet_1),另外我們把servlet開始的時刻標記為servlet_0,servlet結束的時刻標記為servlet_4。

攔截器(interceptor):就是對請求和返回進行攔截,它作用在servlet的內部,具體來說有三個地方:

1)servlet_1和servlet_2之間,即請求還沒有到controller層

2)servlet_2和servlet_3之間,即請求走出controller層次,還沒有到渲染時圖層

3)servlet_3和servlet_4之間,即結束視圖渲染,但是還沒有到servlet的結束

元素之間關系圖

關于SpringBoot攔截器中Bean無法注入的問題

解決辦法

那就只是在攔截器中出現該問題了,解決辦法如下:

關于SpringBoot攔截器中Bean無法注入的問題

首先上圖是我的攔截器和要注入的iRedisUtil對象,出問題的就是這個iRedisUtil。

要解決問題是在項目中繼承“WebMvcConfigurerAdapter”類的類中添加攔截器類作為一個Bean,如下:

關于SpringBoot攔截器中Bean無法注入的問題

現在去運行,發現iRedisUtil對象有值了。

到此這篇關于關于SpringBoot攔截器中Bean無法注入的問題的文章就介紹到這了,更多相關SpringBoot攔截器Bean無法注入內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/shamo89/p/8534580.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 非洲黑人gay巨大 | 逼逼毛片| 美女张开大腿让男人桶 | 女女宿舍互慰h文小说 | 日韩一区二区三区精品 | 肉文np高h | 高清在线观看免费入口 | 欧美成人中文字幕 | ai换脸明星专区在线观看 | 日韩高清一区二区 | 韩国三级年轻小的胰子完整 | 欧美日韩精品一区二区三区视频 | 无套白浆 | 韩国黄色网址 | 日韩中文字幕一区 | 为什么丈夫插我我却喜欢被打着插 | 秘书喂奶好爽一边 | 日本亚洲欧洲高清有码在线播放 | 亚洲乱码一区二区三区国产精品 | 男人与禽交的方法 | 毛片小视频| 第一次出血videos | 1024免费观看完整版在线播放 | 国内精品国语自产拍在线观看55 | 国产在线伊人 | 四虎影视永久在线观看 | 免费观看俄罗斯特黄特色 | 97理伦 | 久久亚洲精品AV成人无码 | 欧美特欧美特级一片 | 9久热这里只有精品免费 | 久久久久嫩草影院精品 | 2021福利视频 | 人阁色第四影院在线观看 | 王王的视频ivk| 国内精品久久久久影院中国 | 91制片厂制作果冻传媒破解 | 天天操天天射天天色 | 日本护士撒尿xxxx欧美 | 近亲乱中文字幕 | 草莓视频旧版 |