Spring Boot自定义Banner
我们在启动 SpringBoot 时,控制台会打印 SpringBoot Logo 以及版本信息;这个操作是 SpringBoot 固定的还是可配置(自定义)的?
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.12.RELEASE)
带着这个疑问,翻阅了一下源码发现这个操作还真可以自定义,SpringBoot 有一个接口 org.springframework.boot.Banner
是专门来做这个操作的。我们可以实现这个接口来自定义打印 Banner 信息;但是不推荐自己去写,因为这个不是什么重要的功能,没必要把时间花在这上面,既然 SpringBoot 提供了这个功能,肯定为我们实现了。
-
org.springframework.boot.ResourceBanner
banner.txt
和banner.location
,从配置项中获取真实的文件地址;如果配置中没有配置,会把配置项作为文件去加载;- org.springframework.boot.ImageBanner
图片格式,SpringBoot 加载配置项
如果没有配置
banner.image.location
,从配置项中获取真实的路径,SpringBoot 会根据配置项的路径加载文件。如果没有配置
banner.image.location
,转而依次加载banner.gif
、banner.jpg
、 banner.png
这三个中存在的文件;如果上面两种都没有配置,SpringBoot 就会加载默认的 Banner;也就是文章开头介绍的方式。
接下来我会介绍在文本格式(ResourceBanner);
环境:
操作系统:MacOS
SpringBoot版本:1.5.12.RELEASE
创建启动类:
src/main/java/{package}/Application.java
@SpringBootApplication public class Application { public static void main(String[] args) { // 启动颜色格式化 // 这不是唯一启动颜色格式的方式,有兴趣的同学可以查看源码 /** * 1. AnsiOutput.setEnabled(AnsiOutput.Enabled.ALWAYS); * 2. 在`src/main/resources`目录下新建文件`application.properties`, * 内容为:`spring.output.ansi.enabled=always` * * 重要:如果配置第二种方式,第一种方式就不会起作用 */ AnsiOutput.setEnabled(AnsiOutput.Enabled.ALWAYS); new SpringApplicationBuilder(Application.class)// .main(SpringVersion.class) // 这个是为了可以加载 Spring 版本 .bannerMode(Banner.Mode.CONSOLE)// 控制台打印 .run(args); } }
创建Banner文件src/main/resource/banner.txt
${AnsiColor.BRIGHT_YELLOW} //////////////////////////////////////////////////////////////////// // _ooOoo_ // // o8888888o // // 88" . "88 // // (| ^_^ |) // // O\ = /O // // ____/`---'\____ // // .' \\| |// `. // // / \\||| : |||// \ // // / _||||| -:- |||||- \ // // | | \\\ - /// | | // // | \_| ''\---/'' | | // // \ .-\__ `-` ___/-. / // // ___`. .' /--.--\ `. . ___ // // ."" '< `.___\_<|>_/___.' >'"". // // | | : `- \`.;`\ _ /`;.`/ - ` : | | // // \ \ `-. \_ __\ /__ _/ .-` / / // // ========`-.____`-.___\_____/___.-`____.-'======== // // `=---=' // // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // // 佛祖保佑 永不宕机 永无BUG // //////////////////////////////////////////////////////////////////// ${AnsiColor.BRIGHT_RED} Application Version: ${application.version}${application.formatted-version} Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
从上面的内容中可以看到,还使用了一些属性设置:
- ${AnsiColor.BRIGHT_RED}:设置控制台中输出内容的颜色,可以自定义,具体参考
org.springframework.boot.ansi.AnsiColor
- ${application.version}:用来获取MANIFEST.MF文件中的版本号,这就是为什么要在Application.java中指定 SpringVersion.class
- {application.formatted-version}:格式化后的{application.version}版本信息
- ${spring-boot.version}:Spring Boot的版本号
- {spring-boot.formatted-version}:格式化后的{spring-boot.version}版本信息
效果
从效果图看,我们定义的文本最后被上了颜色,颜色是如何转换的,可以参考:颜色特效
生成工具
如果让我们手工的来编辑这些字符画,显然是一件非常困难的差事。所以,我们可以借助下面这些工具,轻松地根据文字或图片来生成用于Banner输出的字符画。
分类:
spring boot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?