螺竹编程
发布于 2024-06-01 / 3 阅读
0

SpringBoot基础/静态模板与文件:Spring Boot Static

同名静态资源访问的顺序

在Spring Boot中,静态资源的访问顺序是按照以下规则进行的:

  1. META-INF/resources:如果资源文件与META-INF/resources目录下的文件同名,那么优先访问META-INF/resources目录下的资源。这个目录通常用于存放JAR包中的静态资源。

  2. /resources:如果资源文件与resources目录下的文件同名,那么其次访问resources目录下的资源。这个目录是标准的Maven项目资源目录。

  3. /static:如果资源文件与static目录下的文件同名,那么再次访问static目录下的资源。static目录是Spring Boot默认的静态资源目录。

  4. /public:如果资源文件与public目录下的文件同名,那么最后访问public目录下的资源。public目录也是Spring Boot默认的静态资源目录。

这个访问顺序可以让你在不同目录下放置同名文件时,根据需要选择加载对应的资源文件。例如,如果你在resources目录和static目录下都有一个名为example.js的文件,那么优先访问resources目录下的文件。

需要注意的是,如果同名文件存在于多个目录下,只会加载第一个匹配到的资源文件。如果没有找到匹配的资源文件,则会返回404错误。

自定义静态资源目录

如果你想自定义静态资源目录,可以通过配置Spring Boot的属性来实现。以下是一种常见的自定义静态资源目录的方法:

  1. application.propertiesapplication.yml配置文件中,添加以下属性:

    propertiesyaml

    # 自定义静态资源目录
    # 这里的`classpath:/mystatic/`是你自定义的静态资源目录路径。可以根据需要进行修改,确保路径正确。
    spring.resources.static-locations=classpath:/mystatic/
  2. 在项目中创建对应的目录结构,并将静态资源文件放置在自定义的目录下。例如,在项目的src/main/resources目录下创建mystatic目录,并将静态资源文件放置在其中。

  3. 重新启动项目,Spring Boot将使用你自定义的静态资源目录。

通过以上步骤,你就可以自定义Spring Boot的静态资源目录。这对于需要将静态资源文件放置在非默认目录中的情况非常有用。请注意,在自定义静态资源目录时,你可以指定多个目录,用逗号分隔。例如:

spring.resources.static-locations=classpath:/mystatic/,classpath:/otherstatic/

这样,Spring Boot将依次查找这些目录下的静态资源文件。

需要注意的是,如果你同时定义了自定义的静态资源目录和默认的静态资源目录(如staticpublic),默认的静态资源目录依然会被使用。如果存在同名文件,将优先使用默认的静态资源目录下的文件。如果你希望完全使用自定义的静态资源目录,可以将默认的静态资源目录禁用。例如:

spring.resources.static-locations=classpath:/mystatic/
spring.resources.add-mappings=false