设置banner的几种方式
- 默认banner: 什么都不用管
- 文字banner: 2.1 resources目录下直接新建banner.txt文件 2.2 配置参数 spring.banner.location=banner124.txt
- 图片banner(gif|png|jpg): 2.1 resources目录下直接新建banner.jpg文件 2.3 配置参数 spring.banner.image.location=favorite.jpg
- 设置兜底图案
// 设置兜底banner
SpringApplication springApplication = new SpringApplication(Sb2Application.class);
springApplication.setBanner(new ResourceBanner(new ClassPathResource(
"banner_bak.txt"
)));
springApplication.run(args);
- 关闭banner
spring.main.banner-mode=off
设置banner的原理
方法的入口在run方法中
Banner printedBanner = printBanner(environment);
主要步骤 获取banners
private Banner getBanner(Environment environment) {
Banners banners = new Banners();
// 获取图片banner
banners.addIfNotNull(getImageBanner(environment));
// 获取文字banner
banners.addIfNotNull(getTextBanner(environment));
if (banners.hasAtLeastOneBanner()) {
return banners;
}
// 判读是否有兜底banner
if (this.fallbackBanner != null) {
return this.fallbackBanner;
}
// 都没有,返回默认banner,定义在springboot默认jar包里面
return DEFAULT_BANNER;
}
- 获取banner,添加到banners变量
-
通过 getImageBanner方法获取图片banner。 1.1 在此方法中,会获取spring.banner.image.location指定路径上的文件 1.2 图片格式三种 gif、png、jpg 1.3 默认的图片文件名为 banner.jpg、banner.png、banner.gif
-
通过getTextBanner方法获取文字banner 1.1 可以通过spring.banner.location指定 1.2 默认banner.txt
- 判断banners是否为空
- 若不为空,返回banners
- 若为空,判读是否设置了兜底banner 2.1 若设置了,返回兜底banner 2.2 没设置,返回默认banner
获取到多个banners都会返回,后续会依次打印
主要步骤 打印banner
- 默认输出
- 先输出banner指定内容
- 获取version信息
- 文本内容前后对齐
- 文本内容染色
- 输出文本内容
- 文字banner输出
- 循环获取到的文字banners
- 可以通过spring.banner.charset指定字符集
- 获取文本内容
- 替换占位符(比如可定义 ${test}参数,在配置文件中指定test=123,就会替换banner文件中的参数)
- 输出文本内容
- 图片banner输出
- 可以通过spring.banner.image.* 设置图片属性
- 读取图片文件流
- 输出图片内容