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)、启动项目,效果展示

image.png

(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);
    }
}

你可能感兴趣的:(05、自定义Banner及定制SpringApplication)