1 查看 SpringBoot 官方文档
通过阅读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的图片 启动的时候效果更炫偶。