spring boot基础学习之(二)静态资源存放的位置?为什么该存放在这?从spring boot底层代码进行剖析(webjars)
创始人
2025-06-01 19:06:54
0


执着有时是一种错误,放弃有时也是一种美丽。


在架构有很多位置可以放置静态资源可以被访问到,位置不同使它们被访问的优先级顺序也有不同,接下来我们将通过spring boot配置的底层代码进行剖析。

第一个类:WebMvcAutoConfiguration

这个类实现实现的功能有很多,这里就不统一一一进行介绍,只讲解我们需要了解的配置

 静态资源配置类

 路径一:用户自己设置(在配置文件设置访问静态资源)

 如果在配置文件进行了新的配置,那么他就会执行上面的if语句:代码的内容的大体意思就是判断是否能够检测到配置文件中的新的路径配置,如果检测到了,那么就会输出Default resource handling disabled 语句,返回值是一个空值,系统默认就会从新配置路径下进行静态资源的访问。

配置用户访问的路径,创建一个新的文件夹,作为静态资源存放数据的目录,并创建一个js文件看看前端用户能不能访问的到

静态资源目录

在application.yaml配置文件进行静态资源目录进行配置

 几行代码则就表明,web静态的资源目录设为classpath路径下的templates,接下来就是访问目录下创建的demo1.html

网页查看该资源,成功输出,表明静态资源目录设置成功。

在没有上面的配置时,访问一个普通文件看能不不能被访问?

在static目录下创建一个网页文件

去网页访问该文档,看看能不能被访问到? 

 文件正常输出,这是在没有进行上面application.yaml配置文件进行配置时,能够被访问,那如果进行静态资源目录的配置后,该文件还能被访问到吗?答案是否定的

 那该目录下的文件能够被访问,那么其他路径下的资源还能被访问到吗?答案是否定的

那么为什么就加了一个配置文件的路径就不能访问了呢?

因为在默认路径它是/**这样的,如果前端用户要去访问,它就会从/目录下开始向下进行寻找,而静态资源原本就在/目录的下面,那么该静态资源自然而然就能够被访问到,但是当我们修改静态目录为其他的文件,那如果用户想要访问的静态资源不在我们设置的静态目录下,那么用户想要访问的静态资源就会查询不到,就会出现上面的页面。

那么默认的静态资源搜索是在哪里呢?

打开类二:WebMvcProperties.java

假设这个类是一个实体类,那么类中的内容都是属性,就是在配置文件application.yaml中进行属性值的注入,默认设置的路径是在/的下面,当然我们也可以进行属性值的注入,去修改用户访问静态资源路径。在配置文件中进行配置。

除了默认的路径还有spring boot项目中默认的几个路径,只要是存在这几个路径下的文档就一定能被用户访问到。

路径在WebProperties.java中配置文件中有设置

 就是上面那四个路径,只要在这几个目录下的静态资源都能被访问到,但是有一点要注意到,那就是当几个目录下存在名字和类型都相同的文件时,不通过目录下的资源优先级顺序不同

看看不同路径的静态资源能不能被前端用户访问到?在上面的四个路径下,创建不同的网页文件,看是否能被访问到?

创建资源文件

 访问结果:

 四个文件都能够被输出,表明四个目录是spring boot能够识别的路径

接下来就是如果四个文件夹下出现相同的静态资源那谁先会被访问呢?

 优先级NO.1

 优先级NO.2

 

优先级NO.3 

 优先级NO.4

 优先级顺序为:

META-INF/resources 》resources》static》public

其实呢,访问路径不光只有这几个?还有一个那就是webjars

Webjars本质就是以jar包的方式引入我们的静态资源 , 我们以前要导入一个静态资源文件,直接导入即可。

使用SpringBoot需要使用Webjars,我们可以去搜索一下:网站:https://www.webjars.org

首先导入依赖:以jquery为例

        org.webjarsjquery3.6.4

 

 依赖被成功导入,接下来我们要尝试尝试看看能不能访问到webjars中的静态文件,就以jquert.js为例,看看能不能被访问到?

 成功被访问,说明这也是一个能够被访问的静态资源目录

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...