Spring Boot 1.5,都是靠重寫 WebMvcConfigurerAdapter 的方法來添加自定義攔截器
SpringBoot 2.0 後,推薦實現 WebMvcConfigurer 或者繼承 WebMvcConfigurationSupport 實現
本次我們選擇實現 WebMvcConfigurer 接口實現攔截器功能
創建 MyWebConfigurer.java,並實現 WebMvcConfigurer 接口
@Configuration
public class MyWebConfigurer implements WebMvcConfigurer {
...
}
開放靜態資源
在 SpringBoot 中,我們將靜態資源放在 resources/static/ 目錄下,如圖:
/**
* 這個方法是用來配置靜態資源的,比如html,js,css,等等
*
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
我們設置 static/ 目錄下的資源訪問不會被攔截
請求路徑攔截
/**
* 這個方法用來註冊攔截器,我們自己寫好的攔截器需要通過這裏添加註冊才能生效
*
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 表示不會攔截的請求
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns(
"/login",
"/register",
"/static/**");
WebMvcConfigurer.super.addInterceptors(registry);
}
我們開放了 /login,/register,/static/**,這些路徑不會被攔截
默認訪問路徑
/**
* 設置默認頁面
*
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// registry.addViewController("/").setViewName("forward:/login.html");
registry.addViewController("").setViewName("index");
// 設置優先級 當請求地址有重複的時候 執行優先級最高的
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
WebMvcConfigurer.super.addViewControllers(registry);
}
設置項目默認訪問地址,例如我們只訪問:127.0.0.1:8080,就會請求到 index.html
跨域處理
/**
* 跨域處理
*
* @param registry
*/
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
.allowCredentials(true)
.allowedHeaders("*")
.maxAge(3600);
}
更多關於跨域處理的知識,請看我的另一篇博客:SpringBoot中使用Cors開啓跨域
關於 SpringBoot 中攔截器功能的實現就介紹到這兒,基本能滿足我們日常開發需要
如您在閱讀中發現不足,歡迎留言!!!