webjars请求处理原则自动配置方法
再往下看,发现了一个方法
这个方法是用来处理静态资源webjars请求的,webjars也是静态资源,是封装为jar包的静态资源,如jquery等,官网:webjars.io
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//首先对类里面的属性private boolean addMappings = true;判断,由于它默认true,所以就不执行if里面的内容
这个就是判断有没有开启静态资源请求映射,true就是开启,false就是关闭。
又由于这个属性在WebProperties里面,这个类又和配置文件中前缀是Spring.web的配置绑定,所以就能由我们控制属性spring.web.resources.addMapping的值从而控制是否开启静态资源请求映射。
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
return;
}
//它默认是true,就跳到了下面这里,执行方法添加一个资源请求映射,但凡请求是/webjars/**,就去路径/META-INF/resources/webjars/下面找对应的文件
addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
//获取配置的StaticLocation静态文件访问路径,mvcproperties文件和配置文件绑定着。如果在配置文件中设置了spring.web.resource.static.location的值,就会获取,没配也有默认的值
//private static final String SERVLET_LOCATION = "/";默认静态资源访问路径值
addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (this.servletContext != null) {
ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
registration.addResourceLocations(resource);
}
});
}
上面这个方法就给出了wenjars资源访问的默认路径为什么是那样的问题的答案