转载

Spring boot 项目新建自己的banner

写在最前

我们在启动 Spring Boot 项目时会在控制台打印如下内容(logo 和版本信息):
. ____ _ __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/ ___)| |_)| | | | | || (_| | ) ) ) )
 ' |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot :: (v2.6.6)

动手替换

生成 Banner 通过如下链接可以生成自己项目想要的 ASCII 艺术字 定制化 ASCII 字符1 定制化 ASCII 字符2 定制化 ASCII 图片 如下生成 banner 字符
To My Love!
 -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-
__ __ __ __
 .*. /~ .~\ /~ ~\ /~ .~\ /~ ~\
 *** ' `\/' * ' `\/' *
 V ( .*)( . *)
/\|/\ \ Ming . *./ \ Yue . *./
 | `\ . . .*/' `\ . . .*/' .*.
 | `\ * .*. */' _ _ `\ * .*. */' ***
 `\ * */' ( `\/'*) `\ * */' V
 `\/' \ */' `\/' /\|/\
 `\/' |
--+++==##<<{{******** Ming Yue ********}}>>##==++--

替换 Banner

项目的 resources 资源目录下创建 banner.txt 文件。例如:把上面生成的 banner 替换进去 image-20220411094548689 再次启动项目,打印如上面 banner 字符即可。此时我们发现对应的 Spring Boot 的一些版本信息没有了,如果还想要,可以添加。 追加 Spring Boot 版本信息等
${spring-boot.version}:Spring Boot 版本号;
${spring-boot.formatted-version}:格式化后的 Spring Boot 版本号信息。
${application.version}:MANIFEST.MF 文件中的版本号;
${application.formatted-version}:格式化后的 MANIFEST.MF 文件中的版本号信息;
追加配置文件 application.properties 中定义的变量
app.author=Strive
最终文件如下,再次启动项目查看打印
To My Love!
 -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-
__ __ __ __
 .*. /~ .~\ /~ ~\ /~ .~\ /~ ~\
 *** ' `\/' * ' `\/' *
 V ( .*)( . *)
/\|/\ \ Ming . *./ \ Yue . *./
 | `\ . . .*/' `\ . . .*/' .*.
 | `\ * .*. */' _ _ `\ * .*. */' ***
 `\ * */' ( `\/'*) `\ * */' V
 `\/' \ */' `\/' /\|/\
 `\/' |
--+++==##<<{{******** Ming Yue ********}}>>##==++--
:: Spring Boot :: (${spring-boot.version})
 --by ${app.author}
打印如下:
 To My Love!
 -=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-

 __ __ __ __
 .*. /~ .~\ /~ ~\ /~ .~\ /~ ~\
 *** ' `\/' * ' `\/' *
 V ( .*)( . *)
/\|/\ \ Ming . *./ \ Yue . *./
 | `\ . . .*/' `\ . . .*/' .*.
 | `\ * .*. */' _ _ `\ * .*. */' ***
 `\ * */' ( `\/'*) `\ * */' V
 `\/' \ */' `\/' /\|/\
 `\/' |

 --+++==##<<{{******** Ming Yue ********}}>>##==++--
:: Spring Boot :: (2.6.6)
 --by Strive

实现原理

Banner 接口专门实现这个操作。要想自定义打印 banner ,只要自定义一个类实现这个接口,重写 printBanner 方法进行打印即可。Springboot 项目启动时,会创建我们的实现类对象,并调用对象的 printBanner 方法。
package org.springframework.boot;

import java.io.PrintStream;
import org.springframework.core.env.Environment;

@FunctionalInterface
public interface Banner {
 void printBanner(Environment environment, Class<?> sourceClass, PrintStream out);

 public static enum Mode {
 OFF, // 关闭 banner 打印
 CONSOLE, // 打印 banner 到 控制台
 LOG; // 打印 banner 到日志文件

 private Mode() {
 }
 }
}
printBanner 默认有三个实现: ImageBanner:加载和打印图片 banner; ResourceBanner:加载和打印字符 banner; SpringBootBanner:默认情况下,会使用 SpringBootBanner 实现类打印 banner; image-20220411101213577
正文到此结束
Loading...