Spring Boot 学习笔记 1 : 自定义 Banner

自定义 Banner

The banner that is printed on start up can be changed by adding a banner.txt file to your classpath or by setting the spring.banner.location property to the location of such a file. If the file has an encoding other than UTF-8, you can set spring.banner.charset. In addition to a text file, you can also add a banner.gif, banner.jpg, or banner.png image file to your classpath or set the spring.banner.image.location property. Images are converted into an ASCII art representation and printed above any text banner.

Banner 是在 Spring Boot 程序启动时输出的标题,可以通过 banner.txt 文件来配置。banner.txt 文件可以放置在 classpath 路径下,或者通过 spring.banner.location 属性来指定路径。如果 banner.txt 文件不是采用 UTF-8 编码,需要通过 spring.banner.charset 属性来指定编码。除了使用 txt 文本文件,还可以通过 spring.banner.image.location 属性添加 banner.gif、banner.jpg、或者 banner.png 等图形文件。图片会自动转换成 ASCII art 的形式覆盖在文本文字上。

banner.txt


占位符

Inside your banner.txt file, you can use any of the following placeholders:

在 banner.txt 文件中,可以使用以下占位符:

变量描述
${application.version}程序的版本号,在 MANIFEST.MF 文件中定义。例如,Implementation-Version: 1.0 输出 1.0
${application.formatted-version} 格式化(使用括号包含并以 v 子母作前缀)后的程序版本号。例如,( v1.0 )
${application.title} 程序的标题,在 MANIFEST.MF 文件中定义。例如,Implementation-Title: MyApp 输出 MyApp
${spring-boot.version} Spring Boot 的版本号。例如,2.0.0.BUILD-SNAPSHOT
${spring-boot.formatted-version} 格式化后的 Spring Boot 版本号,例如,( v2.0.0.BUILD-SNAPSHOT )
${Ansi.NAME} or ${AnsiColor.NAME}使用 ANSI 转义码
${AnsiBackground.NAME}, ${AnsiStyle.NAME}使用 ANSI 转义码

编码式生成 Banner

The SpringApplication.setBanner(…​) method can be used if you want to generate a banner programmatically. Use the org.springframework.boot.Banner interface and implement your own printBanner() method.

可以通过 SpringApplication.setBanner(…​) 方法来编码式的生成 banner,只需要实现 org.springframework.boot.Banner 接口并重写 printBanner() 方法。

package org.springframework.boot;

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

public interface Banner {
    void printBanner(Environment var1, Class<?> var2, PrintStream var3);

    public static enum Mode {
        OFF,
        CONSOLE,
        LOG;

        private Mode() {
        }
    }
}

模式

You can also use the spring.main.banner-mode property to determine if the banner has to be printed on System.out (console), sent to the configured logger (log), or not produced at all (off).

可以使用 spring.main.banner-mode 属性来定义 banner 的输出级别,包括在控制台输出(console),在日志输出(log),或者不启用(off)。

例如,在 yml 文件中使用以下配置来禁用 banner:

spring:
    main:
        banner-mode: "off"

Bean

The printed banner is registered as a singleton bean under the following name: springBootBanner.

banner 会注册成一个名称为 springBootBanner 的单例的 bean。

package org.springframework.boot;

import java.io.PrintStream;
import org.springframework.boot.Banner;
import org.springframework.boot.SpringBootVersion;
import org.springframework.boot.ansi.AnsiColor;
import org.springframework.boot.ansi.AnsiOutput;
import org.springframework.boot.ansi.AnsiStyle;
import org.springframework.core.env.Environment;

class SpringBootBanner implements Banner {
    private static final String[] BANNER = new String[]{"", "  .   ____          _            __ _ _", " /\\\\ / ___\'_ __ _ _(_)_ __  __ _ \\ \\ \\ \\", "( ( )\\___ | \'_ | \'_| | \'_ \\/ _` | \\ \\ \\ \\", " \\\\/  ___)| |_)| | | | | || (_| |  ) ) ) )", "  \'  |____| .__|_| |_|_| |_\\__, | / / / /", " =========|_|==============|___/=/_/_/_/"};
    private static final String SPRING_BOOT = " :: Spring Boot :: ";
    private static final int STRAP_LINE_SIZE = 42;

    SpringBootBanner() {
    }

    public void printBanner(Environment environment, Class<?> sourceClass, PrintStream printStream) {
        String[] version = BANNER;
        int padding = version.length;

        for(int var6 = 0; var6 < padding; ++var6) {
            String line = version[var6];
            printStream.println(line);
        }

        String var8 = SpringBootVersion.getVersion();
        var8 = var8 == null?"":" (v" + var8 + ")";

        String var9;
        for(var9 = ""; var9.length() < 42 - (var8.length() + " :: Spring Boot :: ".length()); var9 = var9 + " ") {
            ;
        }

        printStream.println(AnsiOutput.toString(new Object[]{AnsiColor.GREEN, " :: Spring Boot :: ", AnsiColor.DEFAULT, var9, AnsiStyle.FAINT, var8}));
        printStream.println();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值