31. Spring Boot中的`Banner`如何自定义?
在 Spring Boot 中,Banner
是指应用启动时显示在控制台的欢迎标语。默认情况下,Spring Boot 会在应用启动时显示一个由 "Spring" 字样组成的 ASCII 艺术图标。不过,Spring Boot 允许你轻松地自定义这个 Banner
,以显示你自己的消息或图案。
1. 自定义 Banner 的方法
Spring Boot 提供了多种方式来自定义启动 Banner
:
1.1 使用 banner.txt
文件自定义 Banner
最常见的方式是创建一个名为 banner.txt
的文件,并将其放在 src/main/resources
目录下。Spring Boot 会自动加载并显示这个文件中的内容作为启动 Banner。
步骤:
- 在项目的
src/main/resources
目录下创建一个名为banner.txt
的文件。 - 在
banner.txt
文件中,输入你想要显示的内容,可以是文本、ASCII 艺术图案等。
示例 banner.txt
文件:
____ _ ____ _
| _ \ ___ __ _ __ _| | | __ ) ___ ___ | |_
| |_) / _ \/ _` |/ _` | | | _ \ / _ \ / _ \| __|
| __/ __/ (_| | (_| | | | |_) | (_) | (_) | |_
|_| \___|\__, |\__, |_| |____/ \___/ \___/ \__|
|___/ |___/
:: Spring Boot :: (v2.5.4)
当应用启动时,Spring Boot 会在控制台中显示 banner.txt
文件中的内容。
1.2 使用 banner.image
文件显示图像
Spring Boot 还支持使用图片作为 Banner。你可以将图片文件命名为 banner.png
、banner.jpg
或 banner.gif
,并将其放在 src/main/resources
目录下。Spring Boot 会在启动时显示该图片。
步骤:
- 将图片文件命名为
banner.png
、banner.jpg
或banner.gif
。 - 将图片文件放在
src/main/resources
目录下。
示例:
如果你将一张名为 banner.png
的图片放在 src/main/resources
目录下,Spring Boot 会在应用启动时显示该图片。
1.3 自定义 Banner 内容中的占位符
你可以在 banner.txt
文件中使用一些占位符,这些占位符会在启动时被替换为实际的值。
常用的占位符:
${application.version}
:显示应用的版本号(从MANIFEST.MF
文件中读取)。${application.formatted-version}
:显示格式化后的应用版本号(包括 "v" 前缀)。${spring-boot.version}
:显示 Spring Boot 的版本号。${spring-boot.formatted-version}
:显示格式化后的 Spring Boot 版本号。${java.version}
:显示 Java 运行时的版本号。${os.name}
:显示操作系统名称。
示例 banner.txt
文件:
____ _ ____ _
| _ \ ___ __ _ __ _| | | __ ) ___ ___ | |_
| |_) / _ \/ _` |/ _` | | | _ \ / _ \ / _ \| __|
| __/ __/ (_| | (_| | | | |_) | (_) | (_) | |_
|_| \___|\__, |\__, |_| |____/ \___/ \___/ \__|
|___/ |___/
:: ${application.formatted-version} ::
1.4 使用 Java 代码自定义 Banner
你还可以通过 Java 代码完全自定义 Banner,使用 SpringApplication.setBanner()
方法设置自定义 Banner。
步骤:
- 实现
org.springframework.boot.Banner
接口。 - 在
SpringApplication
中设置自定义的 Banner 实现。
示例:
import org.springframework.boot.Banner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.io.PrintStream;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(MyApplication.class);
app.setBanner(new CustomBanner());
app.run(args);
}
static class CustomBanner implements Banner {
@Override
public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
out.println("Custom Banner: Welcome to My Application");
}
}
}
在这个示例中,CustomBanner
实现了 Banner
接口,并在 printBanner
方法中输出自定义的内容。
1.5 禁用 Banner
如果你不想在启动时显示任何 Banner,可以将 banner
设置为 off
。
步骤:
- 在
application.properties
文件中添加以下配置:
spring.main.banner-mode=off
- 或者在代码中禁用 Banner:
SpringApplication app = new SpringApplication(MyApplication.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
2. 总结
Spring Boot 提供了多种方式自定义启动 Banner:
banner.txt
文件:最常见的方式,通过banner.txt
文件设置文本或 ASCII 艺术图案。- 图片文件:通过
banner.png
、banner.jpg
或banner.gif
文件显示图片 Banner。 - 占位符:在
banner.txt
中使用占位符显示动态内容。 - Java 代码:通过实现
Banner
接口,在代码中完全自定义 Banner。 - 禁用 Banner:通过设置
spring.main.banner-mode=off
来禁用 Banner。
这些方式使得你可以灵活地自定义 Spring Boot 应用的启动标语,提升应用的品牌感和识别度。