Skip to content

静态资源

gexiangdong edited this page Jul 3, 2018 · 4 revisions

Spring Boot项目中,默认支持的静态资源位置

classpath:位置 项目中的目录 优先级
/META-INF/resources/ src/main/resources/META-INF/resources/ 优先级最高
/resources/ src/main/resources/resources/ 第二优先
/static/ src/main/resources/static/ 第三优先
/public/ src/main/resources/public/ 第四优先

@EnableWebMvc 注解

如果项目中没有@EnableWebMvc注解,那么上述静态资源是可以直接被浏览器访问的,如果项目中有@EnableWEbMvc注解,则无法访问了。

这是因为SpringBoot默认启动了自动配置,自动配置配置上述静态资源的访问,而使用@EnableWebMvc注解后,会禁止掉org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration 的自动配置,于是这些不能被访问了。

如果需要@EnableWebMvc注解,又需要静态资源,增加一个自定义的配置:

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // URL访问所有的/css/开头的url,都映射到src/main/resources/statics/css目录下;
        // 注意需要classpath:开头
        registry.addResourceHandler("/css/**")
            .addResourceLocations("classpath:/static/css/");
    }
    
}