自学内容网 自学内容网

第三章 SpringBoot静态资源导入原理探究

目录

一、源码解析

二、自定义静态资源读取路径

三、WebJars引入静态资源

四、首页定制


注:本章使用的SpringBoot版本为3.3.4,老版本在配置属性和底层源码细节上会有所调整。

一、源码解析

SpringBoot使用Spring MVC内置的资源处理器来导入静态资源,如CSS、JavaScript和图片等。以下是静态资源处理器底层源码:

通过这张源码图我们可以得知,SpringBoot会先读取配置文件确认是否读取开启的自定义的静态资源读取路径(默认开启),如果没有则去读取WebJars形式的静态资源,最后再通过/**映射到的四个静态资源路径去读取资源。

SpringBoot会自动将/**的路径映射到以下路径读取静态资源内容:

  • classpath:/static/

  • classpath:/public/

  • classpath:/resources/

  • classpath:/META-INF/resources/

下图代码所示我们访问一个js脚本静态资源,SpringBoot会从static下读取到该资源。

文件路径读取优先级:resources > static > public 

二、自定义静态资源读取路径

SpringBoot同时支持自定义静态资源的位置,默认为开启状态。我们可以通过配置application.properties(yml)来实现自定义资源路径,配置的属性为 spring.web.resource.static-locations,老版本通常为spring.resources.static-locations

具体可以查看您当前SpringBoot版本的源码,搜索WebMvcAutoConfiguration类,进入WebProperties类,查看内部的具体属性staticLocations的层级关系来确认:

spring:
  web:
    resources:
      static-locations: classpath:/wangzhexiao/

上述的自定义配置将会告诉Spring Boot在classpath:/wangzhexiao/目录下查找各类静态资源。

注意,配置静态资源位置时,不应该包含/**后缀,因为Spring Boot会自动为你添加这个后缀。

访问资源时,SpringBoot会将根/定向到我们自定义的资源路径classpath:/wangzhexiao/

三、WebJars引入静态资源

此外,Spring Boot还提供了WebJars的支持,允许你通过WebJars的形式来引入前端资源。例如,你可以通过添加以下依赖在项目中使用jQuery:

<dependency>

<groupId>org.webjars</groupId>

<artifactId>jquery</artifactId>

<version>3.6.0</version>

</dependency>

引入WebJars后,你可以通过/webjars/**的路径来访问这些资源。

四、首页定制

通过阅读源码可知,SpringBoot对于index.html的读取与其他静态资源类似,默认从classpath的四个路径下读取:

因此我们可以尝试在static目录下创建index.html,启动服务后即可成功访问:


原文地址:https://blog.csdn.net/qushaming/article/details/142382353

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!