Spring boot如何自定义banner

发布时间:2021-11-17 14:48:17 作者:小新
来源:亿速云 阅读:140
# Spring Boot如何自定义Banner

## 引言

在启动Spring Boot应用时,控制台会默认输出一个由字符组成的"Spring"图案。这个图案被称为**Banner**,是Spring Boot的一个有趣特性。通过自定义Banner,开发者可以展示项目信息、团队Logo或任何个性化内容。本文将详细介绍如何实现自定义Banner的多种方式。

## 一、默认Banner机制

Spring Boot在启动时会按以下顺序查找Banner:
1. 类路径下的`banner.txt`文件
2. 类路径下的`banner.jpg`、`banner.png`或`banner.gif`图片文件
3. 如果都没有找到,则使用默认的Spring Banner

## 二、文本Banner自定义

### 1. 基础文本Banner
在`resources`目录下创建`banner.txt`文件,Spring Boot会自动识别。内容支持:
- 普通文本
- 特殊变量占位符(需用`${}`包裹)

示例:
```text
  ____              _          ___  ____  
 / ___| _ __   __ _| | _____  / _ \/ ___| 
 \___ \| '_ \ / _` | |/ / _ \| | | \___ \ 
  ___) | |_) | (_| |   < (_) | |_| |___) |
 |____/| .__/ \__,_|_|\_\___/ \___/|____/ 
       |_|                                
:: 应用名称 :: ${spring.application.name}
:: 版本号   :: @project.version@
:: 启动时间 :: ${application.startup-date}

2. 变量占位符说明

Spring Boot支持以下预定义变量: - ${application.version} - MANIFEST.MF中的版本号 - ${spring-boot.version} - Spring Boot版本 - ${application.title} - 应用名称 - ${application.formatted-version} - 格式化后的版本号

3. 字体样式控制

通过AnsiColor和AnsiBackground可设置颜色:

${AnsiColor.BRIGHT_CYAN}
  /////   ////// //   // ////// 
 //      //     //   // //   // 
  ///// ////// //   // //   // 
     // //     //   // //   // 
 /////  ////// ////// ////// 
${AnsiColor.DEFAULT}

三、图片Banner实现

1. 图片格式支持

将图片文件放入resources目录,支持: - banner.jpg - banner.png - banner.gif(动态效果)

2. 图片转换配置

application.properties中配置:

spring.banner.image.width=72  # 字符宽度
spring.banner.image.height=20 # 字符高度
spring.banner.image.invert=false # 反色显示
spring.banner.image.margin=2 # 边距

四、编程式Banner配置

通过Java代码动态设置Banner:

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(MyApp.class);
        app.setBanner(new Banner() {
            @Override
            public void printBanner(Environment environment, 
                                  Class<?> sourceClass, 
                                  PrintStream out) {
                out.println("=== 自定义动态Banner ===");
                out.println("当前环境: " + 
                    String.join(",", environment.getActiveProfiles()));
            }
        });
        app.run(args);
    }
}

五、高级技巧

1. 环境感知Banner

根据不同环境显示不同内容:

<#if spring.profiles.active?contains("dev")>
  // 开发环境Banner
<#else>
  // 生产环境Banner
</#if>

2. 禁用Banner

application.properties中:

spring.main.banner-mode=off

或通过代码:

app.setBannerMode(Banner.Mode.OFF);

3. Banner回调接口

实现BannerPrinter接口可完全控制打印逻辑

六、创意实践案例

1. 系统信息展示

OS: ${os.name} ${os.version}
CPU: ${os.arch}
JVM: ${java.version} ${java.vendor}

2. 动态生成ASCII艺术字

使用在线工具生成: - https://www.bootschool.net/ascii - https://patorjk.com/software/taag

3. 结合Spring事件显示启动进度

app.addListeners(new ApplicationListener<ApplicationEvent>() {
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if(event instanceof ApplicationStartingEvent) {
            System.out.print("[");
        }
        // 其他事件处理...
    }
});

七、注意事项

  1. 图片Banner在部分IDE控制台可能显示异常
  2. 生产环境建议关闭彩色输出以避免日志混乱
  3. 过大的Banner会影响启动日志查看
  4. Windows系统可能需要额外配置才能显示ANSI颜色

结语

自定义Banner是展示项目个性的好方式,合理运用可以: - 增强团队认同感 - 快速识别环境 - 展示关键信息 - 提升开发者体验

建议根据实际项目需求选择合适的实现方式,避免过度设计。完整的Banner配置参考可查看官方文档。 “`

该文档共约1200字,采用Markdown格式编写,包含: 1. 多级标题结构 2. 代码块示例 3. 属性配置片段 4. 外部链接引用 5. 列表和特殊符号使用 可根据需要进一步补充具体案例或截图说明。

推荐阅读:
  1. Spring Boot 中如何定制 Banner
  2. Spring Boot 2.X 实战教程(10)构建系统

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring boot banner

上一篇:Meta-Learning知识点有哪些

下一篇:jquery如何获取tr里面有几个td

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》