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