静态资源映射
源码分析
查看 SpringMVC 的自动配置类,里面有一个配置静态资源映射的方法:
看到 <1>
块,有一个默认配置,将能匹配 /webjars/**
路径的请求映射到 classpath:/META-INF/resources/webjars/
中。
接着在 <2>
块又将 this.mvcProperties.getStaticPathPattern()
变量对应值的路径映射 this.resourceProperties.getStaticLocations()
对应值的目录下。
this.mvcProperties
对应的配置类为 org.springframework.boot.autoconfigure.web.WebMvcProperties
,可以看到 this.mvcProperties.getStaticPathPattern()
对应的值为 /**
。
this.resourceProperties
对应的配置类为 org.springframework.boot.autoconfigure.web.ResourceProperties
,可以看到 this.resourceProperties.getStaticLocations()
对应的值为 {"classpath:/META-INF/resources/", "classpath:/resources/","classpath:/static/", "classpath:/public/"}
。
即 <2>
块就是将能匹配 /**
的请求路径映射到项目路径下 classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/
中。
结论
请求路径如果匹配 /webjars/**
规则,那么 SpringBoot 就会去 classpath:/META-INF/resources/webjars/
目录下寻找对应资源。
请求路径如果匹配 /**
规则(即任意请求路径),那么 SpringBoot 就会去 classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/
目录下寻找对应资源。
欢迎页
源码分析
依旧是 SpringMVC 配置类中,有一个注册欢迎页映射 bean 的方法:
查看 resourceProperties.getWelcomePage()
方法:
接着查看 getStaticWelcomePageLocations()
方法:
即 resourceProperties.getWelcomePage()
方法默认就是从静态资源目录下即 classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/
目录中寻找名为 index.html
的资源。
结论
SpringBoot 中默认的欢迎页为 classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, classpath:/public/
目录下名为的 index.html
的页面。
站点图标
源码分析
在 SpringMVC 配置类中还有一个页面图标配置类:
faviconHandlerMapping
方法便是用来处理图标映射,在 <1>
处给匹配 **/favicon.ico
的请求路径指定了图标请求处理器 faviconRequestHandler()
,在 <2>
处设置了图标请求处理器寻找图标的目录为 this.resourceProperties.getFaviconLocations()
,查看该方法:
可以看到,该方法返回的是静态文件夹目录资源。
结论
在 SpringBoot 工程中的静态资源目录放置一个名为 favicon.ico
的网页图标,该图标就会被 SpringBoot 使用。
评论区