1 查看 SpringBoot 官方文档

https://docs.spring.io/spring-boot/docs/2.0.6.RELEASE/reference/htmlsingle/#boot-features-banner

通过阅读springboot的文档发现一个有意思的东西 自定义 Banner ,具体内容如下:

根据上述内容了解到 SpringBoot 不仅可以通过文本,还可以通过图片来自定义 Banner 。本着打破沙锅问到底的精神,继续查看官网文档。

通过下图信息可以知道 SpringBoot 提供了一个 Banner 的接口,来控制是否使用Banner 和通过什么方式进行Banner的打印。

2 阅读 SpringBoot  处理 Banner 的源码

SpringBoot 定义了一个接口 Banner 来指定打印的方式和是否启用 Banner ,首先看看 Banner 接口的实现类有哪些。

点击 ResourceBanner 看看如何实现 Banner 的打印

通过上面的代码我们可以清晰知道 他是将获取resource的输入流然后打印, 那我们就在看看 这个resource是在什么时候给他的

 

关于文本Banner SpringBoot  优先看配置文件有没有配置 spirng.banner.location,如果有就走配置文件的内容,如果没有就走resource目录下 banner.txt文件的内容。

关于图片Banner SpringBoot 优先看配置文件有没有配置 spirng.banner.image.location 如果有就走配置文件的内容,如果没有就走resource目录下  banner.gif 或 banner.jpg 或 banner.png 图片的内容。

 

SpringBoot 启动获取 Banner逻辑: SpringBoot 在启动的时候会先显示ImageBanner, 然后就是 TextBanner  如果都没有就显示默认的Banner。

 

看到这里是不是有点恍然大明白的赶脚。

3 自定义 Banner 实战

3.1 自定义文本Banner

原理看明白啦 ,接下来上代码了。首先我们通过最简单的方式在resource目录下创建一个banner.txt

我们可以通过http://www.network-science.de/ascii (文字转文本)https://www.fontke.com/tool/image2ascii/(图片转文本)来定义我们想要的文本内容。

banner.txt 内容如下

.........................................................................................................................................................................
............................,]]/@@@@@@@O.................................................................................................................................
...................,]O@@@@@@@@@@@@@@@@@@\................................................................................................................................
...............,/@@@@@@@@@@@@@@@@@@@@@@@@@@\`............................................................................................................................
............./@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`..........................................................................................................................
...........,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...........                _             _                 _  ...........................................................
..........=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`......... ___ _ __  _ __(_)_ __   __ _| |__   ___   ___ | |_ ..........................................................
.........=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@`......../ __| '_ \| '__| | '_ \ / _` | '_ \ / _ \ / _ \| __|..........................................................
.........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O........\__ \ |_) | |  | | | | | (_| | |_) | (_) | (_) | |_ ..........................................................
........,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@........|___/ .__/|_|  |_|_| |_|\__, |_.__/ \___/ \___/ \__|..........................................................
........=@@@@@@@@@`,[@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@^.......    |_|                 |___/                       ..........................................................
........=@@@@@@@@^        .,[[O@@@@@@@@@@@@@@@@@@@@^....... ____    ___   ____   ____  _____ _     _____    _    ____  _____ ............................................
.........@@@@@@@^/@\]                [@@@@,\@@@@@@@........|___ \  / _ \ | ___| |  _ \| ____| |   | ____|  / \  / ___|| ____|............................................
........./@@@@@@[[[[@@@]           /@@O[[[[\ O@@@@^........  __) || | | ||___ \ | |_) |  _| | |   |  _|   / _ \ \___ \|  _|  ............................................
.......=@`@@@@^    ,`   ,`       ,`    .]    =@@@/\\....... / __/ | |_| | ___) ||  _ <| |___| |___| |___ / ___ \ ___) | |___ ............................................
.......@^ =@@^    =@@\                =@@\.  =@@/  @^......|_____(_)___(_)____(_)_| \_\_____|_____|_____/_/   \_\____/|_____|............................................
.......@^  .,@.   =@@@                =@@@.  @^   .@`....................................................................................................................
.......,@`   =@                             =/   ,@^.......     _                       _                       _                             ...........................
.........,@@@@@\                           =@@@@@[......... ___| |__  _   _  ___   __ _(_) __ _ _ __  _ __ ___ (_)_ __   __ _ _   _ _   _  ___...........................
...............\^                         =@...............|_  / '_ \| | | |/ _ \ / _` | |/ _` | '_ \| '_ ` _ \| | '_ \ / _` | | | | | | |/ _ \..........................
................@^   .@@/[@[[\/[\@[\O@   ,@`............... / /| | | | |_| | (_) | (_| | | (_| | | | | | | | | | | | | | (_| | |_| | |_| |  __/..........................
.................\\.   \@/ \,`=`^ \@/   /@`................/___|_| |_|\__,_|\___/ \__, |_|\__,_|_| |_|_| |_| |_|_|_| |_|\__, |\__, |\__,_|\___|..........................
...................\@\`   ,[[OO[[`  .]@/`..................                          |_|                                |___/ |___/            ..........................
.....................,/@@\`     ,]@@O....................................................................................................................................
.................../@@@@\ .[[[[[. ,@@@@@`.................. _  _ _    _ ____   __                   ____  _ ____   __                       .............................
.................,@@@@@^\@\    ./@@`@@@@@\.................| |(_) | _/ |___ \ / /___      ___   _  / __ \/ |___ \ / /_   ___ ___  _ __ ___  .............................
................/@@@@@@   \@@@@@/`  @@@@@@\................| || | |/ / | __) | '_ \ \ /\ / / | | |/ / _` | | __) | '_ \ / __/ _ \| '_ ` _ \ .............................
...............=@@@@@@^             =@@@@@@^...............| || |   <| |/ __/| (_) \ V  V /| |_| | | (_| | |/ __/| (_) | (_| (_) | | | | | |.............................
................O@@@@@`=@@@` , ,@@@^=@@@@@@`...............|_|/ |_|\_\_|_____|\___/ \_/\_/  \__, |\ \__,_|_|_____|\___(_)___\___/|_| |_| |_|.............................
...............=@   @@       =      ,@/[..@`............... |__/                            |___/  \____/                                   .............................

将该文件放入到resource目录下然后启动spirngboot项目

 

3.1 自定图片Banner

我们将一个图片的名称改改为 banner.jpg 图片内容如下:

启动springboot项目 日志内容如下:

3.3 通过配置文件定义文本Banner 和图片Banner

由于我们的图片有点大所以将图片宽和高改成了10px 所以显示的有点小。yml配置文件内容如下

我们也可以通过配置文件来自定我们具体要显示的图片和文本的地址来进行显示,项目启动后显示的就是我们配置的文本和图片了。 我们可以可以定义一个gif的图片 启动的时候效果更炫偶。

4 demo 工具以及版本说明

开发工具:Spring Tool Suite (STS)

JDK版本:1.8.0_144

springboot版本:2.0.5.RELEASE

玩转 SpringBoot 2.x 之自定义 Banner 日志输出原理篇相关推荐

  1. 【超哥原创分享】自定义实现日志输出,抛弃任何依赖包,日志输出随心走,弃繁就简,简而不凡

    简要说明: 现在日志输出框架太多,想找个简单的用用,结果没找到.日志输出中又不想做任何依赖处理,所以就自己做了一个日志输出.完整代码如下: package com.liangchao.luckdraw ...

  2. 玩转 SpringBoot 2.x 之自定义Starter依赖

    前言 SpringBoot 核心功能之一就是 starter 依赖也叫起步依赖,他默认提供了 spring-boot-starter-web.spring-boot-starter-logging.s ...

  3. idea springboot一直卡在启动 没有日志输出

    断点从 springApplication.run(args),进入 在 SpringApplication,322行 handleRunFailure(context, ex, exceptionR ...

  4. SpringBoot(11)---特性_SpringApplication类(自定义Banner)

    SpringBoot特性_SpringApplication类(自定义Banner) SpringApplication类作为SpringBoot最基本.最核心的类,在main方法中用来启动Sprin ...

  5. SpringBoot通过yml和xml文件配置日志输出

    SpringBoot中默认使用Logback进行日志输出,可以同时使用通过logback的配置文件logback.xml或是SpringBoot框架的配置文件application.yml进行配置. ...

  6. 玩转springboot:默认静态资源和自定义静态资源实战

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了3个月总结的一线大厂Java面试总结,本人已拿腾 ...

  7. @retention注解作用_分分钟带你玩转SpringBoot自定义注解

    在工作中,我们有时候需要将一些公共的功能封装,比如操作日志的存储,防重复提交等等.这些功能有些接口会用到,为了便于其他接口和方法的使用,做成自定义注解,侵入性更低一点.别人用的话直接注解就好.下面就来 ...

  8. springboot banner在线生成_SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner

    SpringBoot系列教程10--小花样之SpringBoot配置自定义Banner 作者:一一哥 一. Spring Boot 常用配置 本章节主要介绍一下 Spring Boot 中的一些常用配 ...

  9. 用了自定义Banner后,SpringBoot瞬间变的高大上了...

    Spring Boot 在启动的时候,我们或许想要把自己公司的 logo,或者是项目的 logo 放上去,我们可以试试本文的这些方法,可以让你快速制作一些 Spring Boot 项目启动时的彩蛋,以 ...

最新文章

  1. ios设置tabbar背景颜色_iOS 13 TabBar的字体颜色及背景颜色的设置
  2. Tensorflow— saver_restore
  3. CSP认证201712-1 最小差值[C++题解]:遍历
  4. 配置Linux两节点SSH密钥信任
  5. MYSQL数据同步到ES7
  6. 【★】百度网盘背后的真实策略!
  7. 学html css之前,学习CSS前必知HTML基础
  8. ArcGIS API for JS geodesicUtils.geodesicAreas 计算面积出现负值情况记录
  9. k2pbreed刷高恪教程_【转载】斐讯K1、K2、K2P 大部分官方固件刷机、刷入Breed 辅助工具教程工具...
  10. BT种子文件(.torrent)的具体文件结构
  11. eclipse下载哪个版本开发java_官网上有很多版本的eclipse,下载哪个版本比较合适?...
  12. Openpose的使用经历
  13. OA项目之我的审批(会议查询会议签字)
  14. IP地址中的网络地址和主机地址分别是什么意思?
  15. 计算机屏幕一直闪,如何解决电脑显示器一直闪的问题
  16. 代码覆盖度-代码覆盖度概念以及度量方法
  17. 总结:python代码实现矩阵最基本操作
  18. 面试mysql之SQL优化总结一:索引的使用
  19. FFMPEG音频解码浅析
  20. bp神经网络数学建模论文,关于bp神经网络的论文

热门文章

  1. i9可以装服务器系统吗,i9服务器
  2. mysql5.1 utf8_编译安装mysql 5.1使用utf8解决乱码问题
  3. java 网络字节序转主机字节序_Linux下查看网络连接
  4. TypeScript 3.5 发布,速度提升、工具智能
  5. 甲骨文通知用户需付费取得 Java 8 更新
  6. c语言栈的实现以及操作_python模拟栈的操作实现非递归方式的快速排序算法
  7. python程序gpu运行时间表_python gpu任务及时调度
  8. chart.js 饼图显示百分比_Excel制作华夫饼图,其实很简单
  9. mysql按域排序_如何在MySQL中对域名进行排序?
  10. 64位指针膨胀 java_64位JVM带来的问题及解决方案