1 查看 SpringBoot 官方文档

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

spring banner图在线 springboot banner生成_spring

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

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

spring banner图在线 springboot banner生成_spring banner图在线_02

spring banner图在线 springboot banner生成_自定义banner_03

2 阅读 SpringBoot  处理 Banner 的源码

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

spring banner图在线 springboot banner生成_sprignboot_04

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

spring banner图在线 springboot banner生成_自定义banner_05

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

spring banner图在线 springboot banner生成_自定义banner_06

 

spring banner图在线 springboot banner生成_sprignboot_07

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

 

spring banner图在线 springboot banner生成_spring_08

spring banner图在线 springboot banner生成_自定义banner_09

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

spring banner图在线 springboot banner生成_spring_10

 

spring banner图在线 springboot banner生成_spring_11

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

spring banner图在线 springboot banner生成_sprignboot_12

spring banner图在线 springboot banner生成_spring_13

 

spring banner图在线 springboot banner生成_配置文件_14

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

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项目

spring banner图在线 springboot banner生成_spring banner图在线_15

 

spring banner图在线 springboot banner生成_sprignboot_16

3.1 自定图片Banner 

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

spring banner图在线 springboot banner生成_sprignboot_17

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

 

spring banner图在线 springboot banner生成_spring_18

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

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

spring banner图在线 springboot banner生成_自定义banner_19

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