前言
本章节讲解Spring Boot 中的2 种静态资源映射规则
- WebJars 映射
- 默认资源映射
1、WebJars 映射
JS、CSS打入jar包,所有通过 WebJars 引入的前端资源都存放在当前项目类路径(classpath)下的“/META-INF/resources/webjars/” 目录中
1.1、pom.xml文件加入资源文件
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.6.1</version>
</dependency>
1.2、Spring Boot 工程里做映射
Spring Boot 通过 MVC 的自动配置类 WebMvcAutoConfiguration 为这些 WebJars 前端资源提供了默认映射规则。
查看addResourceHandlers方法
http://localhost:8080/webjars/jquery/3.6.1/jquery.js
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/")
.resourceChain(false)
.addResolver(new WebJarsResourceResolver())
.addResolver(new PathResourceResolver());
}
}
2、默认资源映射
当访问项目中的任意资源(即“/**”)时,Spring Boot 会默认从以下路径中查找资源文件(优先级依次降低):
- classpath:/META-INF/resources/
- classpath:/resources/
- classpath:/static/
- classpath:/public/
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
//加载public文件夹数据
registry.addResourceHandler("/public/**")
.addResourceLocations("classpath:/public/");
//加载static文件夹数据
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/");
}
}
查看资源方法
http://localhost:8080/static/js/jquery/3.6.1/jquery.js
http://localhost:8080/static/img/log.png