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

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

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

瀏覽:108日期: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容器,這樣容器內的對象就可以相互注入了。總共有以下三種方式進行處理上述問題。

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久久,三上悠亚国产精品一区二区三区
久久不射网站| 亚洲精品97| 国产毛片精品久久| 首页亚洲欧美制服丝腿| 午夜国产精品视频免费体验区| 婷婷综合五月| 视频一区欧美日韩| 日韩av三区| 国产 日韩 欧美 综合 一区| 日韩欧美一区二区三区在线观看 | 久久国产三级精品| 国产精品3区| 91综合视频| 亚洲高清激情| 亚洲免费专区| 精品视频在线观看网站| 日韩av福利| 91九色精品| 日韩高清在线一区| 精品视频91| 尤物精品在线| 国产美女久久| 亚洲激情欧美| 国产精品1区在线| 国产精品88久久久久久| 日韩精品一级| 久草免费在线视频| 免费观看在线综合| 久久a爱视频| 亚洲人成网77777色在线播放| 日本中文字幕视频一区| 国产欧美日韩亚洲一区二区三区| 国产午夜精品一区二区三区欧美 | 久久久久国产精品一区二区| 亚洲欧美日韩国产一区| 欧美国产视频| 99热免费精品| 久久国产精品美女| 国产专区一区| 欧美一区网站| 久久国产主播| 国产精品久久| 在线日韩视频| 蜜桃久久久久| 蜜臀久久久99精品久久久久久| 精品欠久久久中文字幕加勒比| 亚洲专区欧美专区| 首页国产精品| 国产日韩一区二区三免费高清| 欧美日韩国产传媒| 国产一区二区精品福利地址| 日韩一区二区三区精品视频第3页| 日韩在线观看不卡| 欧美视频久久| 日本一区二区免费高清| 日韩a一区二区| 国产一区二区三区自拍| 亚洲伦乱视频| 91精品国产自产在线观看永久∴ | 国产精品一区亚洲| 91精品成人| 久久av电影| 爽爽淫人综合网网站| 久久久久国产一区二区| 精品国产午夜| 热久久久久久| 久久亚洲视频| 不卡视频在线| 色综合五月天| 麻豆一区二区在线| 日本天堂一区| 四虎成人精品一区二区免费网站| 久久久影院免费| 国产在视频一区二区三区吞精| 日韩国产一区二| 日韩中文字幕不卡| 在线精品小视频| 欧美色图一区| 日韩三区免费| 性欧美videohd高精| 国产在线视频欧美一区| 国产精品99久久免费观看| 国产色99精品9i| 日韩高清欧美激情| 综合一区av| 水蜜桃久久夜色精品一区的特点| 亚洲女同中文字幕| 不卡视频在线| 亚洲作爱视频| 性色一区二区| 欧美专区一区二区三区| 99香蕉国产精品偷在线观看| 欧美日韩国产欧| japanese国产精品| 好看的亚洲午夜视频在线| 亚洲高清成人| 亚洲成人三区| 99精品99| 日韩午夜免费| 狠狠色综合网| 亚洲精华国产欧美| 男人天堂欧美日韩| 一区二区国产精品| 日本在线一区二区三区| 欧美有码在线| 国产精品久久久久久久久久妞妞 | 日韩精品1区2区3区| 香蕉久久国产| 日本亚洲视频| 久久国产免费看| 国产精品17p| 国内一区二区三区| 日韩电影免费网址| 亚洲激情婷婷| 日韩精品一区二区三区中文在线| 91精品国产经典在线观看| 美女久久久久久 | 精品中文在线| 国产日韩电影| 午夜免费一区| 视频精品一区| 麻豆精品久久久| 91精品久久久久久久久久不卡| 欧美女激情福利| 日韩精品一级| 国产精品伦理久久久久久| 欧美性感美女一区二区| 亚洲精品婷婷| 欧美精品aa| 久久天堂成人| 亚洲久久在线| 日韩在线卡一卡二| 国产欧美日韩在线观看视频| 9999国产精品| 夜夜嗨av一区二区三区网站四季av| 色8久久久久| 国产精品成久久久久| 日韩成人亚洲| 久久激情五月激情| 亚洲美女久久精品| 免费在线欧美视频| 国产一区二区三区四区| 亚洲一区日韩| 精品网站999| 国产一级久久| 精品国产麻豆| 91久久久久| 国产精品免费99久久久| 欧美13videosex性极品| 日韩精品一卡二卡三卡四卡无卡| 欧美日本久久| 五月天激情综合网| 欧美黑人巨大videos精品| 精品在线91| 亚洲精品乱码| 欧洲av一区二区| 久久国产尿小便嘘嘘| 亚洲网站视频| 国产精品a级| 亚洲有吗中文字幕| 精品欧美一区二区三区在线观看| 三级在线观看一区二区| 国产黄大片在线观看| 免费在线观看精品| 色网在线免费观看| 欧美日韩18| 99re国产精品| 日韩另类视频| 久久男人av| 日韩精品乱码av一区二区| 欧美日韩一区二区综合| 麻豆高清免费国产一区| 亚洲精品一级| 欧美日韩视频一区二区三区| 鲁鲁在线中文| 麻豆精品新av中文字幕| 九九久久婷婷| 捆绑调教日本一区二区三区| 青青草伊人久久| 午夜在线视频一区二区区别| 日韩不卡视频在线观看| 99视频在线精品国自产拍免费观看| 久久久国产精品入口麻豆| 免费看精品久久片| 欧美日韩免费观看一区=区三区| 国产乱码午夜在线视频| 欧美激情视频一区二区三区在线播放| 亚洲永久精品唐人导航网址| 国产二区精品| 久久人人99| 国产麻豆久久| 国产精品对白久久久久粗| 亚洲理论在线| 免费日韩av片| 狠狠久久婷婷| japanese国产精品| 欧美国产91| 欧美69视频| 欧美不卡在线| 夜久久久久久|