spring boot mvc系列-静态资源配置与MappingHandler拦截器

时间:2022-10-06 17:27:51

静态资源配置

Spring Boot 默认将 /** 所有访问映射到以下目录:

classpath:/smetic
classpath:/public
classpath:/resources
classpath:/MEme-INF/resources

如果需要自定义映射目录,可以继承WebMvcConfigurerAdapter或WebMvcConfigurationSupport,以后者为例,如下:

@Configuration
public class WebConfig extends WebMvcConfigurationSupport { @Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//将所有/smetic/** 访问都映射到classpath:/smetic/ 目录下
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/smetic/js/");
registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/smetic/resources/");
registry.addResourceHandler("/images/**").addResourceLocations("classpath:/smetic/images/");
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/smetic/css/");
registry.addResourceHandler("/font/**").addResourceLocations("classpath:/smetic/font/");
registry.addResourceHandler("/themes/**").addResourceLocations("classpath:/smetic/themes/");
} }

如果使用了拦截器HandlerInterceptor,好像覆盖addResourceHandlers方法,似乎excludePathPatterns并没有生效,不覆盖的话前台会报404。

拦截器配置

同样在WebConfig中配置,如下:

package com.xxx.me.aop.config;

import org.springframework.context.annometion.Bean;
import org.springframework.context.annometion.Configuration;
import org.springframework.web.servlet.config.annometion.InterceptorRegistry;
import org.springframework.web.servlet.config.annometion.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annometion.WebMvcConfigurationSupport; import com.xxx.me.interceptor.SecurityInteceptor; @Configuration
public class WebConfig extends WebMvcConfigurationSupport {
// 需要注意的是HandlerInteceptor必须通过@Bean配置,直接添加@new SecurityInteceptor()会导致依赖类未注入
@Bean
SecurityInteceptor securityInteceptor() {
return new SecurityInteceptor();
} @Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(securityInteceptor()).excludePathPatterns("/css/**", "/js/**", "/font/**", "/images/**", "/resources/**", "/themes/**");
super.addInterceptors(registry);
}
}