13.0、springboot-静态资源导入探究

13.0、springboot-静态资源导入探究

双击shift键查询WebMvcAutoConfigration.class,我们能找到下面这个添加资源处理器的方法

public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (!this.resourceProperties.isAddMappings()) {
        logger.debug("Default resource handling disabled");
    } else {
        this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
        this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
            registration.addResourceLocations(this.resourceProperties.getStaticLocations());
            if (this.servletContext != null) {
                ServletContextResource resource = new ServletContextResource(this.servletContext, "/");
                registration.addResourceLocations(new Resource[]{resource});
            }

        });
    }
}

我们来分析一下这串代码,第一个if方法中是说如果静态资源的属性已经被自定义了那么会直接return,然后默认的配置这段代码就会失效。

第二个方法中出现了一个webjars,来说说什么是webjars?

比如说我们以前前端使用js的时候应该要手动的导入js才能使用,

那么webjars就相当于把之前的js文件当成依赖直接在pom.xml文件中配置引入即可使用js。

那我们进入webjars官网:https://www.webjars.org/,在里面可以直接拷贝到js相关的maven依赖,然后拷贝依赖放到自己项目的pom.xml文件中即可。

 

如果我们没有自定义修改属性,那么就会进入下一个添加静态资源的方法:该方法是去webjars下面找,只要是在webjars/下请求的静态资源,都会去

classpath:/META-INF/resources/webjars这个目录下寻找,而这个目录的结构只要是在webjars官网上拷贝的依赖添加进来都会符合这个结构。也就是说在不修改默认属性的情况下一定是能找得到到的,如下图所示:

 

 用localhost:8080/webjars/github-com-jquery-jquery/3.4.1/ajax.js

确实能够访问到这个目录下的资源

再来看下一个方法如下:

我们能够看到这个方法调用了一个getStaticPathPattern()方法点击进去,如图下所示

 

进来后会看到一个StaticPathPattern再次点击这个进去会看到/**也就是接收所有任意的请求

 

方法往下走可以看到有一个resourceProperties点进去

 

resourceProperties点进去会看到一个Resources再点进去

 

Resources再点进去可以看到有四个目录的位置都可以接收请求

 

也就是说我们可以在classpath下

创建public文件夹、resources文件夹,static文件夹

在这3个文件夹里所有的资源都可以直接在localhost:8080/后面被访问到,测试如下:

 

测试成功!在public文件夹下的test.js文件成功的被访问到了

 

因为这三个文件夹下的都能被访问到,所以我测试了一下他们之间的优先级如下:

resources>static(默认)>public

一般resources下放一些上传文件public下放一些公共访问的资源static下放图片等

总结:

在springboot中,我们可以使用以下方式处理静态资源

·webjars localhost:8080/webjars/

·public、static、/**、resources localhost:8080/webjars/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值