大家在做springboot项目时,启动项目,控制台都会打印spring的默认的banner:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.3.RELEASE)

在翻看springboot启动源码时发现,看到了打印banner的代码,支持自定义banner,而且也比较方便。

private Banner getBanner(Environment environment) {
    Banners banners = new Banners();
    banners.addIfNotNull(getImageBanner(environment));
    banners.addIfNotNull(getTextBanner(environment));
    if (banners.hasAtLeastOneBanner()) {
        return banners;
    }
    if (this.fallbackBanner != null) {
        return this.fallbackBanner;
    }
    return DEFAULT_BANNER;
}

从获取banner的代码可以看出,先获取图片banner,再获取文本banner,如果都没获取到,使用默认banner。

private Banner getImageBanner(Environment environment) {
    String location = environment.getProperty(BANNER_IMAGE_LOCATION_PROPERTY);
    if (StringUtils.hasLength(location)) {
        Resource resource = this.resourceLoader.getResource(location);
        return resource.exists() ? new ImageBanner(resource) : null;
    }
    for (String ext : IMAGE_EXTENSION) {
        Resource resource = this.resourceLoader.getResource("banner." + ext);
        if (resource.exists()) {
            return new ImageBanner(resource);
        }
    }
    return null;
}

获取图片banner的代码中,会从

spring.banner.image.location

属性中获取图片所在位置,如果无该属性值,会去src/main/resources路径下找banner.“gif”, “jpg”, “png”文件。

private Banner getTextBanner(Environment environment) {
    String location = environment.getProperty(BANNER_LOCATION_PROPERTY,
            DEFAULT_BANNER_LOCATION);
    Resource resource = this.resourceLoader.getResource(location);
    if (resource.exists()) {
        return new ResourceBanner(resource);
    }
    return null;
}

如上获取文本banner代码中,从

spring.banner.location

属性中获取文本banner的位置,没有配置该属性的话,默认为src/main/resources路径下的banner.txt。

1、自定义文本banner

按照上述分析,我们在src/main/resources下新建banner.txt文件,banner的内容我们可以使用工具生成,

推荐网站: http://patorjk.com/software/taag/

生成自定义banner:

将生成的banner copy到banner.txt文件中,补充内容如下:

        _       _     _             
       (_)     (_)   | |            
  _   _ _ _   _ _ ___| |_ __ _ _ __ 
 | | | | | | | | / __| __/ _` | '__|
 | |_| | | |_| | \__ \ || (_| | |   
  \__, |_|\__, |_|___/\__\__,_|_|   
   __/ |   __/ |                    
  |___/   |___/                     
 
::::::::::::::::::::::::::::::::::::::
author: yiyistar
email: xxxx@qq.com
::::::::::::::::::::::::::::::::::::::

在application.properties添加如下内容(可选):

spring.banner.location=banner.txt

启动springboot,控制台打印如下:

2、自定义图片banner

在application.properties添加如下内容:

#image位置(可选)
spring.banner.image.location=banner.jpg
#控制banner高度
spring.banner.image.height=15
#控制banner宽度
spring.banner.image.width=45

将制作好的 banner.jpg 加入到src/main/resources文件夹下。启动springboot,控制台打印如下:

如果将banner.jpg 和 banner.txt都放在src/main/resources下,启动时都会打印。