当前位置: 首页 > 工具软件 > WebJars > 使用案例 >

SpringBoot---web-->>静态资源配置-webjars(2)

谭越
2023-12-01

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资源访问的默认路径为什么是那样的问题的答案

 类似资料: