SpringBoot自定义启动Banner读取流程分析

date
Mar 28, 2019
slug
SpringBoot自定义启动Banner读取流程分析
status
Published
tags
Spring
summary
type
Post
 
先从main方法找起,从run方法一路点进去
notion image
这里有执行两个方法,前面执行的是SpringApplication的构造方法,后面执行的是SpringApplication的run()方法
notion image
从run()方法点进去找到了打印banner的一句代码,经过调试发现执行完这句话就打印出banner
notion image
然后找到打印banner的方法是bannerPrinter.print
notion image
再看print方法的源码,先通过getBanner方法获取Banner在打印banner,然后再看getBanner方法
notion image
print方法中的getBanner方法返回的是Banner对象,Banner是一个接口。
notion image
通过查看getBanner方法实现发现实际返回的是Banners对象,而Banners对象是实现了Banner接口的,Banners里面装载多个Banner,全部执行Banner的打印方法。
notion image
notion image
然后再分析getBanner方法,只要在环境配置有自定义的TextBanner或者ImageBanner就打印自定义的banner,否则打印SpringBoot默认的banner SpringBootBanner
notion image
在看看getTextBanner,getImageBanner两个方法,都是先判断application.properties里有没有自定义配置,如果没有就读取默认配置。
notion image
相关默认配置变量
notion image
整个banner配置流程如下:
notion image
现在实践一下,在resources目录下放两个自定义的banner文件,分别是banner.txt,banner.jpg
notion image
以下是banner.txt文本的内容和banner.jpg图片内容
notion image
notion image
Spring Boot启动打印效果:
notion image

© Ryan Tang 2021 - 2025