好的,各位观众老爷们,欢迎来到今天的“Spring Boot Banner 魔法秀”!♂ 今天咱们不讲枯燥的代码,咱们聊聊怎么让你的 Spring Boot 应用启动时,不再是那个平平无奇的 “Spring” 大字,而是像孔雀开屏一样,展示出你独特的个性和风采!
开场白:Banner,不止是启动画面,更是你的品牌名片!
想象一下,你辛辛苦苦开发的 Spring Boot 应用,终于要上线了。用户满怀期待地启动它,结果… 屏幕上蹦出来一个默认的 Spring Boot Banner,简直就像精心打扮参加派对,结果发现大家都穿了同款礼服,瞬间失去了灵魂!
所以,自定义 Banner 不仅仅是为了美观,更是为了:
- 品牌展示: 在启动时就告诉用户,这是谁家的应用,彰显你的品牌形象。
- 信息传递: 可以展示应用的版本号、运行环境、开发者信息等等,方便排错和维护。
- 个性表达: 让你的应用与众不同,彰显你的技术实力和艺术品味。
- 提升用户体验: 一个漂亮的 Banner,能让用户在启动时心情愉悦,增加对应用的好感。
第一幕:默认 Banner 的“前世今生”
Spring Boot 默认的 Banner 其实是个纯文本文件,名为 banner.txt,位于 src/main/resources 目录下。如果你没有手动创建,Spring Boot 会自动生成一个。
这个默认 Banner 长什么样呢? 就像一个穿着朴素,但是又有点呆萌的小伙子:
. ____ _ __ _ _
/\ / ___'_ __ _ _(_) __ _ ___ | | | |
( ( )___ | '_ | '_| | |/ _` | / __| | | | |
\/ ___)| |_)| | | | | (_| | \__ \ | | | |
' |____| .__|_| |_|_|\__,_| |___/ |_|_|_|
=========|_|==============|===========
:: Spring Boot :: (v2.7.17)
它用 ASCII 字符拼出了 Spring 的 logo,还显示了 Spring Boot 的版本号。虽然简单,但也算尽职尽责了。
第二幕:自定义 Banner 的N种姿势
好了,了解了默认 Banner,接下来咱们就要开始“整容”了!让它改头换面,变成你想要的模样。
姿势一:替换 banner.txt
这是最简单粗暴,也是最常用的方法。直接在 src/main/resources 目录下创建一个 banner.txt 文件,然后把你精心设计的 ASCII 艺术作品放进去就行了。
-
ASCII 艺术生成器: 如果你不会画 ASCII 艺术,没关系,网上有很多在线生成器,比如:
你可以输入文字,选择字体,然后生成漂亮的 ASCII 艺术。
-
示例: 比如,我想做一个显示我的应用名称 “Super App” 的 Banner,可以这样:
_ _ _ _ __ __ _ | | | | ___| | | ___ / _| ___ / _|__| | | |_| |/ _ \ | |/ _ \ | |_ / _ \| |_/ _| | | _ | __/ | | __/ | _| (_) | _| (_| | |_| |_|\___|_|_|\___| |_| \___/|_| \__| |把这段代码复制到
banner.txt中,重新启动应用,看看效果!
姿势二:使用图片生成 Banner
如果你觉得 ASCII 艺术太 low,想用图片来展示 Banner,也是可以的!但是需要一些额外的操作。
-
引入依赖: 在
pom.xml文件中添加以下依赖:<dependency> <groupId>com.github.lalyos</groupId> <artifactId>jfiglet</artifactId> <version>1.0.2</version> </dependency> -
创建
banner.txt: 在banner.txt文件中,使用${Ansi.XXX}来控制颜色和样式。例如:${AnsiColor.BRIGHT_RED} _ _ _ _ __ __ _ | | | | ___| | | ___ / _| ___ / _|__| | | |_| |/ _ \ | |/ _ \ | |_ / _ \| |_/ _| | | _ | __/ | | __/ | _| (_) | _| (_| | |_| |_|\___|_|_|\___| |_| \___/|_| \__| | ${AnsiColor.DEFAULT}这里
${AnsiColor.BRIGHT_RED}表示设置文字颜色为亮红色,${AnsiColor.DEFAULT}表示恢复默认颜色。 -
配置
application.properties: 添加以下配置:spring.banner.image.location=classpath:logo.png spring.banner.image.width=76 spring.banner.image.height=30 spring.banner.image.margin=3 spring.banner.image.invert=falsespring.banner.image.location:指定图片的位置,这里是classpath:logo.png,表示图片位于src/main/resources目录下。spring.banner.image.width:指定图片的宽度,单位是字符。spring.banner.image.height:指定图片的高度,单位是字符。spring.banner.image.margin:指定图片周围的空白边距,单位是字符。spring.banner.image.invert:是否反转颜色,true表示反转,false表示不反转。
-
准备图片: 在
src/main/resources目录下放入你的图片,命名为logo.png。注意: 图片会被转换成 ASCII 字符,所以图片要尽量简单,颜色对比要明显,否则效果可能不太好。
姿势三:使用 Banner 接口
如果你想更灵活地控制 Banner 的内容,可以使用 Spring Boot 提供的 Banner 接口。
-
创建 Banner 实现类: 创建一个类,实现
Banner接口,并重写printBanner方法。import org.springframework.boot.Banner; import org.springframework.core.env.Environment; import org.springframework.boot.ansi.AnsiColor; import org.springframework.boot.ansi.AnsiOutput; import org.springframework.boot.ansi.AnsiStyle; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; @Configuration public class MyBanner implements Banner { @Override public void printBanner(Environment environment, Class<?> sourceClass, Appendable out) { String appName = environment.getProperty("spring.application.name", "Default App Name"); String version = "1.0.0"; // 替换为你的应用版本 String developer = "Your Name"; // 替换为你的名字 // 使用 AnsiOutput 控制颜色和样式 String bannerText = AnsiOutput.toString( AnsiColor.BRIGHT_GREEN, " 欢迎使用 ", AnsiStyle.BOLD, appName, AnsiStyle.NORMAL, "n", AnsiColor.DEFAULT, " 版本: ", version, "n", " 开发者: ", developer, "n" ); try { out.append(bannerText); } catch (Exception e) { // 处理异常 } } }在这个例子中,我们使用了
AnsiOutput类来控制 Banner 的颜色和样式。你可以使用AnsiColor、AnsiStyle等枚举来设置不同的颜色和样式。 -
注册 Banner Bean: 在 Spring Boot 的启动类中,注册你的
BannerBean。import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(MyApplication.class); app.setBanner(new MyBanner()); // 设置自定义 Banner app.run(args); } }或者,你也可以使用
@Bean注解来注册BannerBean。import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class BannerConfig { @Bean public MyBanner myBanner() { return new MyBanner(); } }注意: 如果你同时使用了
banner.txt和Banner接口,Banner接口的优先级更高,banner.txt会被忽略。
姿势四:使用 SpringApplicationBuilder
如果你想在程序中动态地设置 Banner,可以使用 SpringApplicationBuilder。
import org.springframework.boot.builder.SpringApplicationBuilder;
public class MyApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(MyApplication.class)
.banner((environment, sourceClass, out) -> {
try {
out.append("My Custom Bannern");
} catch (Exception e) {
// 处理异常
}
})
.run(args);
}
}
这种方式可以在程序中直接定义 Banner 的内容,更加灵活。
第三幕:Banner 中的变量魔法
Spring Boot Banner 还支持一些内置变量,可以在 banner.txt 中使用。
| 变量名 | 描述 |
|---|---|
${application.version} |
应用的版本号,从 MANIFEST.MF 文件中读取。 |
${application.formatted-version} |
格式化后的应用版本号,例如:v1.0.0。 |
${spring-boot.version} |
Spring Boot 的版本号。 |
${spring-boot.formatted-version} |
格式化后的 Spring Boot 版本号,例如:v2.7.17。 |
${application.name} |
应用的名称,从 spring.application.name 配置项中读取。 |
${os.name} |
操作系统名称。 |
${os.version} |
操作系统版本。 |
${java.version} |
Java 版本。 |
例如,你可以在 banner.txt 中这样使用:
Application Name: ${application.name}
Version: ${application.version}
Spring Boot Version: ${spring-boot.version}
第四幕:高级技巧:使用 Groovy 脚本
如果你想让 Banner 更加动态和复杂,可以使用 Groovy 脚本。
-
创建
banner.groovy: 在src/main/resources目录下创建一个banner.groovy文件。 -
编写 Groovy 脚本: 在
banner.groovy文件中,编写你的 Groovy 脚本。import org.springframework.boot.ansi.AnsiColor def appName = spring.application.name ?: "Default App Name" def version = "1.0.0" // 替换为你的应用版本 def developer = "Your Name" // 替换为你的名字 println """ ${AnsiColor.BRIGHT_YELLOW} *************************************** * Welcome to ${appName} * *************************************** ${AnsiColor.DEFAULT} Version: ${version} Developer: ${developer} """在这个例子中,我们使用了 Groovy 的字符串模板,可以动态地获取应用的名称、版本号和开发者信息。
第五幕:Banner 的禁用与开启
有时候,你可能不想显示 Banner,或者想在不同的环境下显示不同的 Banner。Spring Boot 提供了几种方法来禁用和开启 Banner。
- 禁用 Banner:
- 在
application.properties中添加spring.main.banner-mode=off。 - 在启动类中,使用
SpringApplication.setBannerMode(Banner.Mode.OFF)。
- 在
- 开启 Banner:
- 在
application.properties中添加spring.main.banner-mode=console或spring.main.banner-mode=log。 - 在启动类中,使用
SpringApplication.setBannerMode(Banner.Mode.CONSOLE)或SpringApplication.setBannerMode(Banner.Mode.LOG)。
- 在
总结:让你的 Spring Boot 应用“亮”起来!
好了,今天的“Spring Boot Banner 魔法秀”就到这里了。希望通过今天的讲解,你已经掌握了自定义 Spring Boot Banner 的各种姿势,可以为你的应用打造一个独一无二的启动画面。记住,Banner 不仅仅是一个启动画面,更是你的品牌名片,是你的个性表达,是提升用户体验的重要一步!
最后,送大家一句名言:“代码是冰冷的,但 Banner 可以是温暖的!”
希望大家在编码的道路上越走越远,做出更多优秀的应用!感谢观看,下次再见!