最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于SpringBoot攔截器中Bean無法注入的問題

 更新時(shí)間:2021年10月19日 08:31:19   作者:那啥快看  
這兩天遇到SpringBoot攔截器中Bean無法注入問題。下面介紹關(guān)于SpringBoot攔截器中Bean無法注入的問題,感興趣的朋友一起看看吧

問題

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

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

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

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

2.開始意識(shí)到只是攔截器上會(huì)有這樣的問題,查詢?cè)驊?yīng)該是:

攔截器執(zhí)行在自動(dòng)bean初始化之前導(dǎo)致這個(gè)問題的。

web里各個(gè)元素的執(zhí)行順序

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

各個(gè)元素具體概念

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

監(jiān)聽器(listener):就是對(duì)項(xiàng)目起到監(jiān)聽的作用,它能感知到包括request(請(qǐng)求域),session(會(huì)話域)和applicaiton(應(yīng)用程序)的初始化和屬性的變化;

過濾器(filter):就是對(duì)請(qǐng)求起到過濾的作用,它在監(jiān)聽器之后,作用在servlet之前,對(duì)請(qǐng)求進(jìn)行過濾;

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

攔截器(interceptor):就是對(duì)請(qǐng)求和返回進(jìn)行攔截,它作用在servlet的內(nèi)部,具體來說有三個(gè)地方:

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

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

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

元素之間關(guān)系圖

解決辦法

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

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

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

現(xiàn)在去運(yùn)行,發(fā)現(xiàn)iRedisUtil對(duì)象有值了。

到此這篇關(guān)于關(guān)于SpringBoot攔截器中Bean無法注入的問題的文章就介紹到這了,更多相關(guān)SpringBoot攔截器Bean無法注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談hibernate之映射文件VS映射注解

    淺談hibernate之映射文件VS映射注解

    下面小編就為大家?guī)硪黄獪\談hibernate之映射文件VS映射注解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Java使用BouncyCastle加密

    Java使用BouncyCastle加密

    本文主要介紹了Java使用BouncyCastle加密,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java驗(yàn)證碼功能的實(shí)現(xiàn)方法

    Java驗(yàn)證碼功能的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Java驗(yàn)證碼功能的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • java多線程編程同步器Future和FutureTask解析及代碼示例

    java多線程編程同步器Future和FutureTask解析及代碼示例

    這篇文章主要介紹了java多線程編程同步器Future和FutureTask解析及代碼示例,對(duì)二者進(jìn)行了詳細(xì)介紹,分析了future的源碼,最后展示了相關(guān)實(shí)例代碼,具有一定參考價(jià)值 ,需要的朋友可以了解下。
    2017-11-11
  • java項(xiàng)目新建遇到的兩個(gè)問題解決

    java項(xiàng)目新建遇到的兩個(gè)問題解決

    創(chuàng)建一個(gè)新的Java項(xiàng)目可以通過多種方式進(jìn)行,包括使用集成開發(fā)環(huán)境(IDE)或手動(dòng)創(chuàng)建,下面這篇文章主要給大家介紹了關(guān)于java項(xiàng)目新建遇到的兩個(gè)問題,需要的朋友可以參考下
    2024-06-06
  • Java安全 ysoserial CommonsCollections3示例分析

    Java安全 ysoserial CommonsCollections3示例分析

    這篇文章主要為大家介紹了Java安全 ysoserial CommonsCollections3示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 實(shí)例講解Java設(shè)計(jì)模式編程中如何運(yùn)用代理模式

    實(shí)例講解Java設(shè)計(jì)模式編程中如何運(yùn)用代理模式

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中如何運(yùn)用代理模式,文中舉了普通代理和強(qiáng)制代理的例子作為代理模式的擴(kuò)展內(nèi)容,需要的朋友可以參考下
    2016-02-02
  • MyBatis映射文件中parameterType與resultType的用法詳解

    MyBatis映射文件中parameterType與resultType的用法詳解

    MyBatis中的ParameterType指的是SQL語句中的參數(shù)類型,即傳入SQL語句中的參數(shù)的類型,下面這篇文章主要給大家介紹了關(guān)于MyBatis映射文件中parameterType與resultType用法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java和C++通過new創(chuàng)建的對(duì)象有何區(qū)別?

    Java和C++通過new創(chuàng)建的對(duì)象有何區(qū)別?

    Java和C++都是面向?qū)ο蟮木幊陶Z言,然而Java和C++在創(chuàng)建對(duì)象時(shí)卻存在不同的方式,由于方式的不同導(dǎo)致在內(nèi)存中管理的不同。這篇文章主要給大家介紹了關(guān)于Java和C++通過new創(chuàng)建對(duì)象區(qū)別的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • Java工廠模式優(yōu)雅地創(chuàng)建對(duì)象以及提高代碼復(fù)用率和靈活性

    Java工廠模式優(yōu)雅地創(chuàng)建對(duì)象以及提高代碼復(fù)用率和靈活性

    Java工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,通過定義一個(gè)工廠類來封裝對(duì)象的創(chuàng)建過程,將對(duì)象的創(chuàng)建和使用分離,提高代碼的可維護(hù)性和可擴(kuò)展性,同時(shí)可以實(shí)現(xiàn)更好的代碼復(fù)用和靈活性
    2023-05-05

最新評(píng)論

南阳市| 大名县| 娄底市| 宜宾县| 驻马店市| 邓州市| 武冈市| 广东省| 九江市| 夏津县| 浠水县| 桃江县| 肥城市| 永安市| 多伦县| 阿瓦提县| 娱乐| 葵青区| 河东区| 晋宁县| 余干县| 瓦房店市| 门源| 石阡县| 广水市| 庆云县| 固原市| 海阳市| 侯马市| 东安县| 左云县| 小金县| 宿松县| 威宁| 平远县| 密山市| 水富县| 合肥市| 石泉县| 建宁县| 桐城市|