SpringBoot入门:SpringBoot2.x自定义启动banner

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

1
2
3
4
5
6
7
  .   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.3.RELEASE)

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

1
2
3
4
5
6
7
8
9
10
11
12
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。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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”文件。

1
2
3
4
5
6
7
8
9
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文件中,补充内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
        _       _     _             
(_) (_) | |
_ _ _ _ _ _ ___| |_ __ _ _ __
| | | | | | | | / __| __/ _` | '__|
| |_| | | |_| | \__ \ || (_| | |
\__, |_|\__, |_|___/\__\__,_|_|
__/ | __/ |
|___/ |___/

::::::::::::::::::::::::::::::::::::::
author: yiyistar
email: xxxx@qq.com
::::::::::::::::::::::::::::::::::::::

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

1
spring.banner.location=banner.txt

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

2、自定义图片banner

在application.properties添加如下内容:

1
2
3
4
5
6
#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下,启动时都会打印。


SpringBoot入门:SpringBoot2.x自定义启动banner
https://river106.cn/posts/ac8b8c19.html
作者
river106
发布于
2020年4月24日
许可协议