springboot对静态资源的映射规则

本文解析了SpringBoot中WebMvcAutoConfiguration类的addResourceHandlers方法,详细介绍了如何配置静态资源,包括通过webjars引入的第三方库和项目自身的资源文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先我们找到这个类:WebMvcAutoConfiguration,从他的后缀看出这是一个有关springmvc自动配置类。在源码中有一个addResourceHandlers方法,这个方法就是对静态资源的配置

@Override
		public void addResourceHandlers(ResourceHandlerRegistry registry) {
			if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}
			Integer cachePeriod = this.resourceProperties.getCachePeriod();
			if (!registry.hasMappingForPattern("/webjars/**")) {
				customizeResourceHandlerRegistration(
						registry.addResourceHandler("/webjars/**")
								.addResourceLocations(
										"classpath:/META-INF/resources/webjars/")
						.setCachePeriod(cachePeriod));
			}
			String staticPathPattern = this.mvcProperties.getStaticPathPattern();
			if (!registry.hasMappingForPattern(staticPathPattern)) {
				customizeResourceHandlerRegistration(
						registry.addResourceHandler(staticPathPattern)
								.addResourceLocations(
										this.resourceProperties.getStaticLocations())
						.setCachePeriod(cachePeriod));
			}
		}

第一种情况,
所有 /webjars/** ,都去 classpath:/METAINF/resources/webjars/ 找资源;就是我们以jar包的方式导入静态资源,在pom文件里面导入对应jar的依赖就可以了,

<!--引入jquery‐webjar -->
		 <dependency> 
		 	<groupId>org.webjars</groupId>
		 	<artifactId>jquery</artifactId>
		 	<version>3.3.1</version>
		 </dependency>

添加完上面的依赖后,我们可以看到在依赖中有了这个jar。
在这里插入图片描述
那么怎么检验有没有成功导入jQuery呢?
我们启动项目,然后进入localhost:8080/webjars/jquery/3.3.1/jquery.js。发现是可以的。
在这里插入图片描述
第二种情况,自己的资源文件
“/**” 访问当前项目的任何资源,如果没有处理,都去(静态资源的文件夹)找映射,那么这些静态资源文件夹的名字都是什么呢?
在这里插入图片描述
然后再点这个
在这里插入图片描述

在这里插入图片描述
我们可以看出在ResourceProperties里面的静态代码块,初始化了RESOURCE_LOCATIONS数组。
所以我们可以得出,文件夹的名字

"classpath:/META‐INF/resources/",
"classpath:/resources/", 
"classpath:/static/", 
"classpath:/public/" 
"/":当前项目的根路径

这里我访问项目里面的Chart.min.js文件在这里插入图片描述
在地址栏输入http://localhost:8080/asserts/js/Chart.min.js,因为本身就是从static文件夹下面找的,所以不用写static
在这里插入图片描述
如果在配置文件里面自己定义静态文件夹的名称,那么上面配置的静态资源就用不了了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值