述
上文中,分析了Spring容器的 refresh 流程,还有 Bean 的实例化流程,本文来了解一下 Spring Boot 中的 Banner 的解析,还有他的原理
自定义Banner
Spring Boot 默认的 Banner 图如下:
1 | . ____ _ __ _ _ |
这里就是一个 Spring 的字符画,加上Spring Boot的版本号, 我们可以把这个图换成我们自定义的一些文字或者图片
文字Banner
1 | // .::::. |
比如我们要在项目中,把Banner换成上面这个,只需要在项目的 Resource
目录下新建一个 Banner.txt
, 然后复制进去就可以了
这里名称默认的就是 Banner.txt
, 如果名称不是这个的话, 比如是 MyBanner.txt
,就需要在 application
配置文件中做以下设置
1 | spring: |
图片banner
Spring Boot 支持 gif
,jpg
,png
这三种格式的图片banner, 打印的时候会将图片转换成一些字符画来输出, 设置方法和文字的banner的是一样的,默认的图片名称也是 Banner
,然后如果名称不是默认名称的话,也是通过修改 application
配置文件指定,配置如下:
1 | spring: |
对于图片banner,还有一些其他的设置,比如图片的长宽等,都是通过 spring.banner.image.*
来配置的
兜底banner
兜底banner,就是上面两种方式都找不到的情况下,会输出的,这个需要通过硬编码的方式设置, 修改项目启动类,如下:
1 | @SpringBootApplication |
这里通过 springApplication.setBanner()
这个方法去设置
关闭banner
如果不想输出任何的banner,也可以通过配置关闭, application
配置文件中配置如下:
1 | spring: |
这里可以配置的值,一共是三种:
- off: 关闭banner
- console: 控制台打印
- log: 打印到日志文件
banner解析原理
了解了如何替换banner之后,来了解以下他的原理,banner是如何被 Spring Boot 识别并且打印的
首先进入run方法,找到打印banner的方法,如下:
点进去
这里不管是log方式还是console的方式,调用的方法其实都是一样的,只是传入的参数不一样,继续点进去往下看
这里分为两步,先获取,然后打印
获取Banner
然后图片和文字banner的获取如下:
打印Banner
这里可能获取到的是我们配置的banner,也可能是 Spring Boot 的默认的banner,也就是 SpringBootBanner
这个类,先来看一下默认的,点进去
然后进入默认的 SpringBootBanner
然后再来看一下文字类型的 banner 的打印, 进入 ResourceBanner
如下:
最后是图片类型的 banner ,进入 ImageBanner
总结
到这儿,就了解了banner的自定义配置,以及他们是如何被解析出来并打印的,这部分比较简单,用处其实也不大,大致了解了就可以了