正常来讲,在编写 Spring 应用时,我会尽量避免讨论样式和图片。当然,这些内容能够在很大程度上让各种应用(包括 Spring 应用)变得更加美观,令用户赏心悦目。但是,对于编写服务器端的 Spring 代码来说,这些静态内容就没有那么重要了。
但是,在 Spring Boot 中,有必要讨论一下它是如何处理静态内容的。当采用 Spring Boot 的 Web 自动配置来定义 Spring MVC bean 时,这些 bean 中会包含一个资源处理器(resource handler),它会将 “/**” 映射到几个资源路径中。这些资源路径包括(相对于类路径的根):
/META-INF/resources/
/resources/
/static/
/public/
在传统的基于 Maven/Gradle 构建的项目中,我们通常会将静态内容放在 “src/main/webapp” 目录下,这样在构建所生成的 WAR 文件里面,这些内容就会位于 WAR 文件的根目录下。如果使用 Spring Boot 构建 WAR 文件的话,这依然是可选的方案。但是,我们也可以将静态内容放在资源处理器所映射的上述四个路径下。