![Spring Boot实战:从0开始动手搭建企业级项目](https://wfqqreader-1252317822.image.myqcloud.com/cover/850/40107850/b_40107850.jpg)
7.7 welcomePage和favicon配置
7.7.1 welcomePage配置
除了静态资源映射之外,Spring Boot也默认配置了welcomePage和favicon,这两个配置都和静态资源映射相关联。welcomePage即默认欢迎页面,其配置源码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/142-4.jpg?sign=1738899202-asR9UBtD9ch90xlPH4IirsyPGpb3iF3Q-0-d8cd9fe43d8f5737b63e5c6855bc787c)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/143-1.jpg?sign=1738899202-LAZvC2O6nvANLTjlUhOPOL2NjRrSt9ah-0-999f8a29d5742522381fe80fbba4fffb)
通过源码可以看出,在进行WebMVC自动配置时程序会向IOC容器注册一个WelcomePageHandlerMapping类型的Bean,即默认欢迎页。其路径为静态资源目录下的index.html。
在实际进行该功能测试时可以先访问一下当前项目根路径,比如在启动项目后访问http://localhost:8080地址,结果如图7-10所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/143-2.jpg?sign=1738899202-rc2uOzuFCpgAHbrzg8xeDyUpXd5YbNGN-0-1fb6eb29ba4c459299733b0d7cdb779d)
图7-10 访问项目根路径的页面结果
此时,服务器返回的是404错误页面。
但是,如果开发人员在静态资源目录下增加index.html文件就能够看到欢迎页面效果,比如选择默认的/static/目录,如图7-11所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/144-1.jpg?sign=1738899202-dFd854LKNmRaJMigbY7XNpPLEUDBIdVe-0-7e4cb7dbb3602ba88c6d1789f61bcae7)
图7-11 增加index.html文件
index.html文件的代码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/144-2.jpg?sign=1738899202-fpBQA3YCVJ78y1fn4smOYxQHw51Jytm6-0-8d85b00db1b7f42b7ccf67763dcab817)
编码完成,在重启项目成功后,再访问http://localhost:8080地址,结果如图7-12所示。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/144-3.jpg?sign=1738899202-6MV8vLtWtHEBhagAdwsQ8pOiEYGpa7g2-0-dbd0320f0d298ce45c0ecff64c64de48)
图7-12 访问项目根路径的页面结果
此时,可以看到默认欢迎页面已经不再是错误页面了。
7.7.2 favicon配置
favicon是favorites icon的缩写,亦被称为website icon(网页图标)、page icon(页面图标)或urlicon(URL图标)。favicon是与某个网站或网页相关联的图标。
不同的网站会放置自身特有的favicon图标,图7-13分别是Spring、百度、掘金、GitHub官网的favicon图标.
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/145-1.jpg?sign=1738899202-8hG0eESZeHUGyzRyZ4CFdIQWJpuojAhK-0-d542cd3b13ab0c3017dcc85867553458)
图7-13 不同网站的favicon图标
Spring Boot支持开发人员对favicon图标进行配置并显示。不过由于版本的迭代,对于favicon图标的支持官方做了一些调整。在Spring Boot 2.2.x版本之前,Spring Boot会默认提供一个favicon图标,比如图7-14左侧类似叶子一样的图标。而Spring Boot 2.2.x版本之后不再提供默认的favicon图标。本书所讲解的案例和源码选择的Spring Boot版本都是2.3.7。对于该版本,网页已经不显示favicon图标,右侧的浏览器标签栏也不存在favicon图标。但是,开发人员可以自定义配置favicon图标。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/145-2.jpg?sign=1738899202-CaKC9CoCWTFDLr228ZLLqLnRrmdInOlN-0-a8845925bf3dfbca7a19833092fabd1f)
图7-14 Spring Boot项目的favicon图标
Spring官方并没有对favicon图标做出特别的说明。不过,官方开发人员在Spring Boot开源仓库的issue中有提及此事,删除默认图标的原因是担心网站信息泄露。如果Spring Boot继续提供默认的favicon图标,这个绿色叶子的小图标很容易被看出是用Spring Boot开发的。
在Spring Boot 2.2.x之前的版本中,favicon图标进行了默认设置,源码如下所示:
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/145-3.jpg?sign=1738899202-l4lvioD0EM8DXSNygwhdccZu3A4SGp3W-0-f1465f4d92b99346d52309f7c353a22f)
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/146-1.jpg?sign=1738899202-InKBWnI1UlLiy7v7KzyUOX5r2igKPNX6-0-07167c3ef61d40ce0f4da82aee5834f4)
而在Spring Boot 2.2.x之后的版本中,这部分源码已经被删除,spring.mvc.favicon.enabled配置项也被标记为“过时”。在Spring Boot官方文档中也能够看出,其实Spring Boot依然支持favicon图标的显示,只是该图标文件需要开发人员自行配置。
接下来就通过一个实际案例来讲解如何在Spring Boot项目中配置开发人员自定义的favicon图标。
首先需要制作一个favicon文件,并将其放入static目录或者其他静态资源目录。然后重启项目访问,可以看到页面已经替换为自定义设置的favicon图标了,如图7-15所示。由于浏览器缓存的原因,可能会出现“自定义favicon图标未生效”的错觉,读者可以尝试刷新几次页面。
![](https://epubservercos.yuewen.com/3069E4/20862583308964806/epubprivate/OEBPS/Images/147-1.jpg?sign=1738899202-WNEozuJxroWcBfchkncWqUD5SkE7jO2J-0-863be605f26a0afb126fff242a423141)
图7-15 自定义favicon图标
通过源码学习和实例讲解,可以发现Spring Boot在进行Web项目开发时为开发人员提供了全面而便利的默认配置,以往需要在web.xml或者Spring MVC配置文件中设置的内容,都改为以编码的方式进行自动注入和实现。开发人员在使用Spring Boot进行项目开发时,甚至可以零配置直接上手开发。不用做任何配置就已经有了视图解析器,不用自行添加消息转换器,Spring MVC需要的一些功能也已经默认加载完成。对于开发人员来说,在开发Web项目时Spring Boot算得上是一件“神兵利器”。当然,如果这些默认配置不符合实际的业务需求,开发人员也可以自行配置,Spring Boot提供了对应的配置参数和辅助类进行实现,非常灵活。