日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

spring boot攔截器注入不了java bean的原因

瀏覽:104日期:2023-07-31 14:04:02

一、如何實現攔截器

在Spring Boot項目中,攔截器經常被用來做登陸驗證,日志記錄等操作。攔截器是Spring提供的,所以可以將攔截器注成bean,由IOC容器來管理。實現攔截器的方式很簡單,主要由以下兩個步驟:

自定義攔截器類實現HandlerInterceptor接口 自定義WebMvc配置類實現WebMvcConfigurer接口,添加自定義攔截器類

簡要實現代碼如下:

自定義攔截器 LoginInterceptor:

public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader('token'); if(StringUtils.isEmpty(token)){ ... return false; } return true; }}

配置自定義攔截器:

@Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor()) // 攔截的請求.addPathPatterns('/**') // 不用攔截的請求.excludePathPatterns('/login'); }}

這個攔截器的主要作用就是攔截所有訪問請求,驗證所帶token是否有效,當token驗證成功后,才能訪問我們的業務接口。這時候就需要提供一個驗證token有效性的接口,在攔截器中驗證token,由于攔截器是Spring提供的,因此很容易想到使用@Component注解將攔截器注成一個 bean。然后使用@Autowired注解將驗證token的類注入到攔截器進行驗證。

改造完的代碼如下:

驗證token接口類:

@Componentpublic class TokenUtil { /** * 驗證token 是否有效 */ public boolean checkToken(String token){ ... }}

改造完的攔截器代碼如下:

@Componentpublic class LoginInterceptor implements HandlerInterceptor { @Autowired private TokenUtil tokenUtil; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if(!tokenUtil.checkToken(token)){ ... return false; } return true; }}

調用接口時發現,TokenUtil并沒有被注入進來!明明代碼寫的沒問題,為什么不能正常注入TokenUtil呢?

仔細觀察我們自定義的配置類WebConfiguration,在添加攔截器的時候用的是new LoginInterceptor(),如果想要攔截器生效,必須將攔截器配置到WebMvc的配置類中,就是我們自定義的WebConfiguration類。現在添加攔截器的時候是 new 了一個攔截器,也就是說并沒有將攔截器托管給IOC容器,所以就無法引入Spring的bean對象。

二、如何將攔截器托管給IOC容器

解決問題的思路也很簡單,就是將攔截器也托管給IOC容器,這樣容器內的對象就可以相互注入了??偣灿幸韵氯N方式進行處理上述問題。

2.1 在WebConfiguration注入攔截器

攔截器代碼不變,在攔截器上使用@Component,同時在WebConfiguration中使用@Autowired注解將攔截器注入。

攔截器代碼:

@Componentpublic class LoginInterceptor implements HandlerInterceptor {}

配置類代碼:

@Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Autowired private LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(loginInterceptor); }}

2.2 在WebConfiguration將攔截器注成bean

攔截器無需增加@Component注解,在WebConfiguration類中使用@Bean注解將攔截器注成bean。

攔截器代碼:

public class LoginInterceptor implements HandlerInterceptor {}

配置類代碼:

@Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Bean public LoginInterceptor loginInterceptor(){ return new LoginInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor( loginInterceptor()); }}

2.3 通過構造器處理

思路是在WebConfiguration類中注入需要的驗證token的業務類,然后在初始化攔截器的時候將業務類通過構造器帶入攔截器中,這樣就不用把攔截器注成Spring Bean對象了。

攔截器代碼:

public class LoginInterceptor implements HandlerInterceptor { private TokenUtil tokenUtil; public LoginInterceptor(TokenUtil tokenUtil) { this.tokenUtil = tokenUtil; }}

配置類代碼:

@Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Autowired private TokenUtil tokenUtil; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginInterceptor(tokenUtil)); }}

三、總結

網上關于攔截器的代碼基本都是通過new一個攔截器進行配置的,這時候就會出現無法注入其他bean的情況。很多人想當然地直接在攔截器加@Component注解使其成為一個bean對象。這是一種錯誤的做法。我們需要保證的是在WebMvc配置類中添加的攔截器是Spring 的一個bean對象,也就是說我們需要將攔截器注成一個bean,同時將這個bean添加的WebMvc配置類中。

以上就是spring boot攔截器注入不了java bean的原因的詳細內容,更多關于spring boot攔截器的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91精品久久久久久久久久不卡| 日韩国产欧美三级| 亚洲欧美久久| 国产日韩欧美在线播放不卡| 久久国产日韩| 国产精品av一区二区| 亚洲免费毛片| 青青久久av| 国产激情久久| 亚洲精品九九| 亚洲国内精品| 亚洲在线观看| 久久亚洲精品伦理| 亚洲18在线| 亚洲小说春色综合另类电影| 色爱综合网欧美| 欧美啪啪一区| 好看不卡的中文字幕| 日韩中文字幕不卡| 蜜桃免费网站一区二区三区| 日韩一区二区三区免费| 精品香蕉视频| 午夜av成人| 亚洲综合五月| 蜜臀国产一区| 久久精品国产亚洲aⅴ| 国产精品嫩草99av在线| 欧美精品羞羞答答| 91亚洲精品视频在线观看 | 精品免费av| 亚洲女同一区| 精品视频在线你懂得| 日韩欧美精品一区| 欧美日一区二区三区在线观看国产免| 尤物网精品视频| 免费看av不卡| 国产一区二区三区四区二区| 久久精品一区二区国产| 国产一区二区三区国产精品| 日韩精品第一区| 少妇久久久久| 美女精品在线| 日韩精品亚洲aⅴ在线影院| 欧美 日韩 国产一区二区在线视频 | 欧美在线影院| 蜜乳av另类精品一区二区| 丝袜脚交一区二区| 麻豆久久久久久| 日韩深夜视频| 国产女优一区| 国产日韩欧美高清免费| 麻豆成人av在线| 丝袜av一区| 噜噜噜久久亚洲精品国产品小说| 亚洲精品三级| 国产精品igao视频网网址不卡日韩 | 日韩国产欧美三级| 国产亚洲精品精品国产亚洲综合| 国产精品密蕾丝视频下载| 三上亚洲一区二区| 丁香六月综合| 亚洲午夜国产成人| 久久狠狠久久| 亚洲精品成人一区| 久久丁香四色| 欧美成人高清| 国内精品伊人| 丝瓜av网站精品一区二区| 国产精品久久久久久久久免费高清 | 美国欧美日韩国产在线播放| 麻豆亚洲精品| 亚洲一级淫片| 极品av在线| 99精品视频精品精品视频| 日韩综合一区| 亚洲欧美伊人| 精品五月天堂| 夜夜精品视频| 91精品高清| 久久国产小视频| 国内精品亚洲| 国产精品一区二区99| 久久国产精品美女| 综合国产精品| 狠狠干成人综合网| 青草综合视频| 亚洲va中文在线播放免费| 欧美激情aⅴ一区二区三区| 国产日产高清欧美一区二区三区 | 亚洲精品一级二级三级| 国产成人久久| 蜜桃av一区二区三区电影| 免费在线小视频| 国产欧美高清| 国产精品入口久久| 一区二区三区四区在线观看国产日韩 | 91一区二区三区四区| 国产69精品久久| 精品午夜视频| 国产免费久久| 欧美日韩一区二区三区在线电影| 国产亚洲精品美女久久| 国产精品sm| 欧美亚洲二区| 视频一区中文字幕精品| 欧美一区成人| 麻豆成人综合网| 欧洲av一区二区| 午夜久久美女| 日本va欧美va精品| 国产66精品| 日韩精品免费一区二区三区| 99精品视频在线| 91精品国产自产精品男人的天堂| 日本午夜精品久久久久| 欧美一区久久久| 婷婷综合一区| 噜噜噜久久亚洲精品国产品小说| 视频一区中文字幕| 欧美激情视频一区二区三区在线播放| 国产精品成人3p一区二区三区| 91精品蜜臀一区二区三区在线| 日韩激情啪啪| 麻豆中文一区二区| 免费日韩视频| 正在播放日韩精品| 成人日韩在线| 激情综合自拍| 麻豆一区二区三区| 影音国产精品| 在线综合欧美| 欧美亚洲一区二区三区| 欧美成人基地| 精品国产一区二区三区噜噜噜| 中文欧美日韩| 日韩国产在线不卡视频| 欧美一区影院| 亚洲精品极品| 久久精品电影| 麻豆成人91精品二区三区| 日韩中文字幕区一区有砖一区| 日韩国产高清在线| 91精品国产91久久久久久黑人| 天堂中文在线播放| 欧美专区一区| 亚洲一级少妇| 久久三级福利| 亚洲欧美日韩视频二区| 麻豆精品在线播放| 国产精品密蕾丝视频下载| 久久国内精品自在自线400部| 亚洲欧洲日韩| 日韩激情网站| 欧美精品国产白浆久久久久| 久久精品 人人爱| 国产精品啊啊啊| 综合在线一区| 国产欧美日韩免费观看| 日韩精品亚洲专区在线观看| 日本久久成人网| 成人羞羞视频播放网站| 国产精品99一区二区| 亚洲人www| 中文一区一区三区高中清不卡免费| 日韩高清国产一区在线| 日韩精品中文字幕吗一区二区| 精品国产一级| 亚洲高清激情| 日韩精品久久久久久| 亚洲欧美日韩国产| 中文字幕一区二区三区在线视频| 97久久亚洲| 欧美中文一区二区| 国产乱码精品一区二区亚洲| 亚洲一区日本| 模特精品在线| 精品国产乱码久久久久久樱花| 国产真实久久| 欧美国产专区| 亚洲激情二区| 精品一级视频| 亚洲大全视频| 国产韩日影视精品| 91伊人久久| 99香蕉国产精品偷在线观看 | 国产精品亚洲欧美日韩一区在线| 国产99精品| 视频在线在亚洲| 精品日韩一区| 99在线观看免费视频精品观看| 中文字幕亚洲精品乱码| 欧美精品97| 91精品福利| 福利一区在线| 久久影院午夜精品| 欧美日本不卡| 欧美日韩中文| 伊人久久大香线蕉av不卡| 婷婷成人在线| 久久男女视频|