在spring boot1.0+,我們可以使用WebMvcConfigurerAdapter來擴展springMVC的功能,其中自定義的攔截器并不會攔截靜態資源(js、css等)。
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {// super.addViewControllers(registry);//瀏覽器發送 /atguigu 請求來到 successregistry.addViewController("/atguigu").setViewName("success");}//所有的WebMvcConfigurerAdapter組件都會一起起作用@Bean //將組件注冊在容器public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("login");registry.addViewController("/index.html").setViewName("login");registry.addViewController("/main.html").setViewName("dashboard");}//注冊攔截器@Overridepublic void addInterceptors(InterceptorRegistry registry) {//super.addInterceptors(registry);//靜態資源; *.css , *.js//SpringBoot已經做好了靜態資源映射registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/index.html","/","/user/login");}};return adapter;}@Beanpublic LocaleResolver localeResolver(){return new MyLocaleResolver();}}
在spring boot2.0+以后,WebMvcConfigurerAdapter就過時了,目前通過繼承WebMvcConfigurationSupport類(ps:繼承后好像MVC自動配置不生效了)或者實現WebMvcConfigurer接口來擴展springMVC的功能。然而該版本自定義的攔截器會攔截靜態資源,因此在使用spring2.0+時,配置攔截器之后,我們要把靜態資源的路徑加入到不攔截的路徑之中。
@Configuration
public class MyMvcConfig implements WebMvcConfigurer{@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/").setViewName("login");registry.addViewController("/index.html").setViewName("login");registry.addViewController("/main.html").setViewName("dashboard");}@Overridepublic void addInterceptors(InterceptorRegistry registry) {//將靜態資源排除在攔截之外registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/index.html","/","/user/login","/static/**");}@Beanpublic LocaleResolver localeResolver(){return new MyLocaleResolver();}}