05、自定义Banner及定制SpringApplication
自定义Banner
当我们启动SpringBoot项目的时候会看到与传统的控制台输出有些不同,如下图所示,是不是感觉挺高端的呢,有些人或许想问,我可不可以自定义一个专属的Banner呢?答案是肯定的。
image.png
1、自定义banner
可以通过在您的类路径中添加一个 banner.txt 文件,或者将banner.location设置到banner文件的位置来更改启动时打印的banner。 如果文件有一些不常用的编码,你可以设置banner.charset(默认为UTF-8)。除了文本文件,您还可以将banner.gif,banner.jpg或banner.png图像文件添加到您的类路径中,或者设置一个banner.image.location属性。 图像将被转换成ASCII艺术表现,并打印在任何文字banner上方。
2、在banner.txt中使用占位符
您可以在banner.txt文件中使用以下占位符:
变量名 | 描述 |
---|---|
${application.version} | 在MANIFEST.MF中声明的应用程序的版本号。例如, Implementation-Version: 1.0 被打印为 1.0. |
${application.formatted-version} | 在MANIFEST.MF中声明的应用程序版本号的格式化显示(用括号括起来,以v为前缀)。 例如 (v1.0)。 |
${spring-boot.version} | 您正在使用的Spring Boot版本。 例如1.5.2.RELEASE。 |
${spring-boot.formatted-version} | 您正在使用格式化显示的Spring Boot版本(用括号括起来,以v为前缀)。 例如(v1.5.2.RELEASE)。 |
${application.title} | 您的应用程序的标题在MANIFEST.MF中声明。 例如Implementation-Title:MyApp打印为MyApp。 |
如果要以编程方式生成banner,则可以使用SpringApplication.setBanner()方法。 使用org.springframework.boot.Banner 如接口,并实现自己的printBanner() 方法。
您还可以使用spring.main.banner-mode属性来决定是否必须在System.out(控制台)上打印banner,使用配置的logger(log)或不打印(off)。
示例演示
(1)、在如下图位置处新建一个banner.txt文件
image.png
(2)、在banner.txt中输入你想要展示的内容
______ _________ _
|\ /||\ /|( ___ \ \__ __/( ( /|
( \ / )| ) ( || ( ) ) ) ( | \ ( |
\ (_) / | | | || (__/ / | | | \ | |
\ / | | | || __ ( | | | (\ \) |
) ( | | | || ( \ \ | | | | \ |
| | | (___) || )___) )___) (___| ) \ |
\_/ (_______)|/ \___/ \_______/|/ )_)
${spring-boot.version}
(3)、启动项目,效果展示
(4)、banner艺术字生成工具
如果让我们手工的来编辑这些字符画,显然是一件非常困难的差事。所以,我们可以借助下面这些工具,轻松地根据文字或图片来生成用于Banner输出的字符画。
http://patorjk.com/software/taag
http://www.network-science.de/ascii/
http://www.degraeve.com/img2txt.php
定制SpringApplication
在前面的几篇文章中,应用程序的主类中的main方法中写的都是SpringApplication.run(xx.class);可能这种写法不能满足程序启动时的需要,你可以创建本地实例并进行自定义,例如关闭Banner,设置一些默认的属性等。
关闭banner:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
//SpringApplication.run(Application.class, args);
SpringApplication application = new SpringApplication(Application.class);
application.setBannerMode(Banner.Mode.OFF);
application.run(args);
}
}
在这里你也可以使用SpringApplicationBuilder来构建
@SpringBootApplication
public class Application {
public static void main(String[] args) {
new SpringApplicationBuilder()
.sources(Application.class)
.bannerMode(Banner.Mode.OFF)
.run(args);
}
}