欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于springboot攔截器HandlerInterceptor的注入問題

 更新時間:2021年09月17日 10:44:01   作者:言午玉口才  
這篇文章主要介紹了springboot攔截器HandlerInterceptor的注入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

springboot攔截器HandlerInterceptor的注入

一、問題描述

項目啟動后,攔截器下的注入為null,影響攔截器的邏輯操作。如下圖:

二、解決策略

原因: 攔截器加載是在springcontext創(chuàng)建之前完成,詳情可以看spring的攔截器加載過程及IOC的關系

解決方案一:使用@Bean在攔截器初始化之前讓類加載,重點在于@Bean的攔截器處理及getCheckFilter()的引入

具體如下:

// 攔截器處理
public class CheckFilter implements HandlerInterceptor { 
    @Autowired
    private SystemService systemService;
} 
 
// 配置類處理 
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
 
    @Bean
    public CheckFilter getCheckFilter(){
        return  new CheckFilter();
    }
 
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(getCheckFilter()).addPathPatterns("/**").
                excludePathPatterns("/admin/auth/**");
        super.addInterceptors(registry);
    }
 
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        super.addResourceHandlers(registry);
    }
 
    @Override
    protected void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/",".jsp");
        super.configureViewResolvers(registry);
    }
}

解決方案二:給攔截器增加配置注解如:@Configuration 、@Component 。在配置類中注入,具體如下操作:

// 攔截器處理
@Configuration   //或者 @Component
public class CheckFilter implements HandlerInterceptor { 
    @Autowired
    private SystemService systemService;
} 
 
// 配置類處理 
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
 
    @Autowired
    private CheckFilter  checkFilter;
 
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(checkFilter).addPathPatterns("/**").
                excludePathPatterns("/admin/auth/**");
        super.addInterceptors(registry);
    }
 
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
 registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        super.addResourceHandlers(registry);
    }
 
    @Override
    protected void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/",".jsp");
        super.configureViewResolvers(registry);
    }
}

三、知識總結

1、涉及spring的攔截器加載過程及IOC的管理

2、參考資料//www.dbjr.com.cn/article/223241.htm

springboot HandlerInterceptor 攔截器匹配規(guī)則寫錯 導致 攔截器無效

項目中發(fā)現(xiàn)攔截器無效,訪問接口 /user/xxx/xxx 沒有進入到攔截器中

@Configuration
public class WebConfigurer implements WebMvcConfigurer {
    
    @Autowired
    private UserInterceptor userInterceptor;
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
    }
   
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(userInterceptor).addPathPatterns("/user/*");
    }
}

原因是 攔截器的匹配規(guī)則弄錯了。我希望 userInterceptor攔截器 攔截 /user/下所有路徑的接口

正確攔截規(guī)則是 /user/**

攔截規(guī)則粟子

addPathPatterns("/**") 表示攔截所有的請求,

addPathPatterns("/**") 表示攔截所有的請求,

addPathPatterns("/test/**") 表示攔截/test/ 下的所有路徑請求,

addPathPatterns("/test/*") 表示攔截/test/abc,攔截/test/aaa , 不攔截 /test/abc/def

addPathPatterns("/test/**").excludePathPatterns("/test/login", “/test/register”) 表示攔截/test/ 下的所有路徑請求,但不攔截 /test/login 和 /test/register

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java生成表格圖片的實例代碼

    Java生成表格圖片的實例代碼

    這篇文章主要介紹了Java生成表格圖片的實例代碼,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • MybatisPlus保存、讀取MySQL中的json字段失敗問題及解決

    MybatisPlus保存、讀取MySQL中的json字段失敗問題及解決

    這篇文章主要介紹了MybatisPlus保存、讀取MySQL中的json字段失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 詳解ArrayList的擴容機制

    詳解ArrayList的擴容機制

    ArrayList基于動態(tài)數(shù)組實現(xiàn),在添加和刪除的時候存在擴容和縮容這樣重新規(guī)劃數(shù)組大小的機制。在ArrayList中,維護Object[] elementData數(shù)組來管理元素,但是ArrayList是動態(tài)可變的,所以elementData數(shù)組長度并不代表ArrayList實際元素個數(shù),所以使用size顯示實際元素個數(shù)
    2021-06-06
  • Java中import導入的用法說明

    Java中import導入的用法說明

    這篇文章主要介紹了Java中import導入的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • elasticsearch+logstash并使用java代碼實現(xiàn)日志檢索

    elasticsearch+logstash并使用java代碼實現(xiàn)日志檢索

    這篇文章主要介紹了elasticsearch+logstash并使用java代碼實現(xiàn)日志檢索,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Java文件操作之IO流 File類的使用詳解

    Java文件操作之IO流 File類的使用詳解

    在java中提供有對于文件操作系統(tǒng)的支持,這個支持在java.io.File類中進行了定義,也就是說在整個java.io包中File類是唯一一個與文件本身操作有關的類(創(chuàng)建,刪除,重命名)有關的類,而如果想要進行File類的操作,我們需要提供有完整的路徑支持,而后可以調(diào)用相應的方法進行處理
    2021-09-09
  • SpringBoot自定義bean綁定實現(xiàn)

    SpringBoot自定義bean綁定實現(xiàn)

    這篇文章主要介紹了SpringBoot自定義bean綁定,最常見的配置綁定的場景,是在自定義的bean中通過@Value注解將某個屬性和對應的配置綁定
    2022-10-10
  • Mybatis結果生成鍵值對的實例代碼

    Mybatis結果生成鍵值對的實例代碼

    這篇文章主要介紹了Mybatis結果生成鍵值對的實例代碼,以及MyBatis返回Map鍵值對數(shù)據(jù)的實現(xiàn)方法,非常不錯,具有參考借鑒價值,需要的的朋友參考下
    2017-02-02
  • 多個sheet Excel 數(shù)據(jù)導入數(shù)據(jù)庫的實現(xiàn)方法

    多個sheet Excel 數(shù)據(jù)導入數(shù)據(jù)庫的實現(xiàn)方法

    這篇文章主要介紹了多個sheet Excel 數(shù)據(jù)導入數(shù)據(jù)庫的實現(xiàn)方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 詳解SpringBoot如何實現(xiàn)統(tǒng)一后端返回格式

    詳解SpringBoot如何實現(xiàn)統(tǒng)一后端返回格式

    在前后端分離的項目中后端返回的格式一定要友好,不然會對前端的開發(fā)人員帶來很多的工作量。那么SpringBoot如何做到統(tǒng)一的后端返回格式呢?本文將為大家詳細講講
    2022-04-04

最新評論