SpringBoot【攔截器】WebMvcConfigurer


SpringBoot---WebMvcConfigurer詳解

1.前言

在Spring Boot 1.5版本都是靠重寫WebMvcConfigurerAdapter的方法來添加自定義攔截器,消息轉換器等。SpringBoot 2.0 后,該類被標記為@Deprecated(棄用)。

官方推薦直接實現WebMvcConfigurer或者直接繼承WebMvcConfigurationSupport

繼承WebMvcConfigurationSupport類:【鏈接】

https://blog.csdn.net/fmwind/article/details/82832758

2.WebMvcConfigurer接口

 /* 攔截器配置 */

void addInterceptors(InterceptorRegistry var1);

/* 視圖跳轉控制器 */

void addViewControllers(ViewControllerRegistry registry);

/** *靜態資源處理**/

void addResourceHandlers(ResourceHandlerRegistry registry);

/* 默認靜態資源處理器 */

void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);

/*** 這里配置視圖解析器**/

void configureViewResolvers(ViewResolverRegistry registry);

/* 配置內容裁決的一些選項*/

void configureContentNegotiation(ContentNegotiationConfigurer configurer);

/** 解決跨域問題 **/

public void addCorsMappings(CorsRegistry registry) ;

2.1  addInterceptors:攔截器

l  addInterceptor:需要一個實現HandlerInterceptor接口的攔截器實例

l  addPathPatterns:用於設置攔截器的過濾路徑規則;addPathPatterns("/**")對所有請求都攔截

l  excludePathPatterns:用於設置不需要攔截的過濾規則

l  攔截器主要用途:進行用戶登錄狀態的攔截,日志的攔截等。

【如上圖所述,設置了不需要攔截的過濾規則,開頭如果不是adminApi開頭的路徑直接404送走。不進行請求】

2.2 addViewControllers:頁面跳轉

以前寫SpringMVC的時候,如果需要訪問一個頁面,必須要寫Controller類,然后再寫一個方法跳轉到頁面,感覺好麻煩,其實重寫WebMvcConfigurer中的addViewControllers方法即可達到效果了

@Override

    public void addViewControllers(ViewControllerRegistry registry) {

        registry.addViewController("/toLogin").setViewName("login");

    }

值的指出的是,在這里重寫addViewControllers方法,並不會覆蓋WebMvcAutoConfiguration(Springboot自動配置)中的addViewControllers(在此方法中,Spring Boot將“/”映射至index.html),這也就意味着自己的配置和Spring Boot的自動配置同時有效,這也是我們推薦添加自己的MVC配置的方式。

2.3 addResourceHandlers:靜態資源

比如,我們想自定義靜態資源映射目錄的話,只需重寫addResourceHandlers方法即可。

注:如果繼承WebMvcConfigurationSupport類實現配置時必須要重寫該方法

addResoureHandler:指的是對外暴露的訪問路徑

addResourceLocations:指的是內部文件放置的目錄

2.4 configureDefaultServletHandling:默認靜態資源處理器

2.5 configureViewResolvers:視圖解析器

這個方法是用來配置視圖解析器的,該方法的參數ViewResolverRegistry 是一個注冊器,用來注冊你想自定義的視圖解析器等。

ViewResolverRegistry 常用的幾個方法:https://blog.csdn.net/fmwind/article/details/81235401

2.6 addCorsMappings:跨域

2.7 configureMessageConverters:信息轉換器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM