SpringBoot对静态资源的映射规则、webjars

目录

源码

webjars

访问静态资源

非webjars 自己的资源访问


源码

WebMvcAutoConfiguration 类的 addResourceHandlers 方法(添加资源映射)

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if (!this.resourceProperties.isAddMappings()) {
            logger.debug("Default resource handling disabled");
            return;
        }
        Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
        CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
        if (!registry.hasMappingForPattern("/webjars/**")) {
            customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**")
                    .addResourceLocations("classpath:/META-INF/resources/webjars/")
                    .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
        }
        String staticPathPattern = this.mvcProperties.getStaticPathPattern();
        if (!registry.hasMappingForPattern(staticPathPattern)) {
            customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern)
                    .addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations()))
                    .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl));
        }
    }

 查看源码可知,所有的 "/webjars/**" 都去 "classpath:/META-INF/resources/webjars/" 下找资源。

webjars

以jar包的方式引入资源.

Webjars 是将客户端资源(Javascript,CSS等)打成jar包文件,以对资源进行统一依赖管理。

我们在开发Java web项目的时候会使用Maven等构建工具以实现对jar包版本依赖管理,以及项目的自动化管理,但是对于JS、Css等前端资源包,我们只能采用拷贝到webapp目录下的手工方式,这样做无法对我们的这些资源进行依赖管理。这时,Webjars 就提供给我们这些前端资源的jar包形式,我们就可以进行依赖管理了。

webjars官网

在Bulid Tool:选项中 选中Maven ,就会以依赖的方式显示。

比如 添加 jquery的 webjars:

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.4.1</version>
</dependency>

访问静态资源

添加依赖之后,启动系统直接访问静态资源:

http://localhost:8080/webjars/jquery/jquery.js

非webjars 自己的资源访问

资源配置类: ResourceProperties

@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)
public class ResourceProperties {

	private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
			"classpath:/resources/", "classpath:/static/", "classpath:/public/" };
数组中的值在项目中的位置
classpath:/META-INF/resources/src/main/resources/META-INF/resources/
classpath:/resources/src/main/resources/resources/
classpath:/static/src/main/resources/static/
classpath:/public/src/main/resources/public/

localhost:8080/abc ---> 去静态资源文件夹里面找abc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值