第一种就是在启动代码中设置。如下所示。
第二种是在 application.properties 中配置 spring.main.banner-mode
这两种方式都可以关闭 Banner,那当它们同时存在的时候,哪个生效呢?我们可以这样分析,启动代码中调用 setBannerMode 方法,改变了 bannerMode 的值,之后 SpringApplication 对象执行 run 方法,在 run 方法中会解析 application.properties 的值,并将其绑定到对应的 bean,后者覆盖前者,所以 application.properties 中的配置优先级更高。
自定义文本类型的 Banner
Spring Boot 中自定义文本类型的 Banner 很简单,我们只要在 resources 下增加一个 banner.txt 就可以了。比如我想让 Banner 显示 永不宕机的佛祖雕像。那我就可以在 banner.txt 中增加以下文本。
打印结果是这样的
如果我们想打印彩色的 banner 出来呢?在Spring Boot 中我们可以利用 AnsiColor 类来实现,我们可以在 banner.txt 中使用 AnsiColor 指定后续的文本的颜色。
如下是最终的结果
我们通过上述代码来看看,Spring Boot 为什么能打印出带颜色的 banner, ResourceBanner 将读取到的文本流转换为一串字符串。再通过4个解析器,来处理待输出的 Banner 内容。
四个解析器分别是:
- environment 对应 application.properties 中的配置;
- VersionResolver 解析 spring boot 版本,
- AnsiResolver 解析颜色或字体等样式配置,
- TitleResolver 解析当前应用的版本,名称等。
Banner图在线生成
在线生成 banner 的地址:
- https://www.bootschool.net/ascii
- http://www.network-science.de/ascii/
- http://patorjk.com/software/taag//
- http://www.degraeve.com/img2txt.php
总结
本文主要讲述了Banner的输出打印过程,如何打印个性化的文本 Banner。ImageBanner 没在本文详细说明,有兴趣的朋友可以查看阅读源码,也比较简单,也有助于你了解 Java 如何实现图片转文本的知识点。通过本文的知识点,你也可以根据自己的要求来实现 Banner, 设置为 fallbackBanner, 从而达到完全个性化的自定义 Banner 的效果。
有任何问题可以在公众号后台留言,指北君会第一时间回复大家。欢迎关注公众号【Java技术指北】,第一时间获取更多精彩内容。