Spring Boot自定义静态资源映射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot自定义静态资源映射相关的知识,希望对你有一定的参考价值。

参考技术A

0、基础html页面

注意将不同demo的序号按文件修改即可, demo01.html 内容如下:

1、Spring Boot项目静态资源默认访问路径

2、在IDEA中对应的路径

访问方法: http://localhost:8080/demo01.html ,如下:

3、优先级顺序

Ⅰ classpath:/META-INF/resources
→ Ⅱ classpath:/resources
→ Ⅲ classpath:/static
→ Ⅳ classpath:/public

1、配置文件配置

Ⅰ 此处是覆盖原有配置的,所以默认路径不能漏掉,假设删除原有路径映射,如下:

可以看到此时正常访问的为,demo01和demo05,如下:

注意: 如此配置原有配置仅剩 classpath:/META-INF/resources 还生效。

Ⅱ 静态文件请求匹配方式

修改后访问路径 http://localhost:8080/test/demo05.html ,访问如下:

2、WebMvcConfigurationSupport配置

注意: 此种配置下,原有的静态资源路径被覆盖、失效。

以上即为Spring Boot自定义静态资源映射的全部内容,感谢阅读。

spring boot 静态资源的映射规则 替他资源映射

1.如果不是    /webjars/** 资源

if (!registry.hasMappingForPattern("/webjars/**")) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/"}).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl));
                }

                String staticPathPattern = this.mvcProperties.getStaticPathPattern();
                if (!registry.hasMappingForPattern(staticPathPattern)) {
                    this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(WebMvcAutoConfiguration.getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl));
                }

spring boot 会通过这个 方法   getStaticLocations 查找

   public String[] getStaticLocations() {
        return this.staticLocations;
    }

通过这个 方法返回    staticLocations 资源文件

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
    private String[] staticLocations;
    private boolean addMappings;
    private final ResourceProperties.Chain chain;
    private final ResourceProperties.Cache cache;

    public ResourceProperties() {
        this.staticLocations = CLASSPATH_RESOURCE_LOCATIONS;
        this.addMappings = true;
        this.chain = new ResourceProperties.Chain();
        this.cache = new ResourceProperties.Cache();
    }

从这里可以看出是一个数组

"classpath:/META-INF/resources/", 

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/"}

所以在项目中 我们可以将静态文件放入 这些文件夹中

 

 

实例:

 

 

 

 

 

 

 

 

以上是关于Spring Boot自定义静态资源映射的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 静态资源的映射规则 webjars 资源映射

spring boot 静态资源的映射规则 欢迎页面映射

spring boot 静态资源映射

Spring Boot对静态资源的映射规则

Spring Boot干货系列:静态资源和拦截器处理

spring boot项目进行war部署,对于静态资源无法访问的问题