SpringBoot基础之banner玩法解析

简介: SpringBoot基础之banner玩法解析
大家好,我是二师兄,本篇文章为大家分享一下springboot的banner用法。


SpringBoot项目启动时会在控制台打印一个默认的启动图案,这个图案就是我们要讲的banner。看似简单的banner,我们能够对它做些什么呢?本篇文章就带大家深入了解一下banner的使用(版本:SpringBoot2.1.4)。

image.png制作自己的banner


第一步:在src/main/resources下面创建banner.txt


第二步:访问网站http://patorjk.com/software/taag,在网站“Type Something ”处输入想要制作的单词(比如:Hello World),会生成对应的字符。也可以通过其他参数来调整字符的样式。

image.png复制生成的字符,粘贴到banner.txt,再次启动程序便可以打印出指定的banner了。


个人比较喜欢的banner是如下图形:
























${AnsiColor.BRIGHT_YELLOW}//////////////////////////////////////////////////////////////////////                          _ooOoo_                               ////                         o8888888o                              ////                         88" . "88                              ////                         (| ^_^ |)                              ////                         O\  =  /O                              ////                      ____/`---'\____                           ////                    .'  \\|     |//  `.                         ////                   /  \\|||  :  |||//  \                        ////                  /  _||||| -:- |||||-  \                       ////                  |   | \\\  -  /// |   |                       ////                  | \_|  ''\---/''  |   |                       ////                  \  .-\__  `-`  ___/-. /                       ////                ___`. .'  /--.--\  `. . ___                     ////              ."" '<  `.___\_<|>_/___.'  >'"".                  ////            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 ////            \  \ `-.   \_ __\ /__ _/   .-` /  /                 ////      ========`-.____`-.___\_____/___.-`____.-'========         ////                           `=---='                              ////      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        ////            佛祖保佑       永不宕机     永无BUG                  //////////////////////////////////////////////////////////////////////


在新版本的SpringBoot中,支持了gifjpgpng的图片形式的banner打印。当然,并不会把图片直接打印在控制台,而是将其像素解析转换成assii编码之后打印。


对于gif动图,会把动图的每个图片都打印出来,如果动图比较大,打印时间较长。可以尝试一下,但建议不要使用gif


banner.txt中,还可以进行一些设置,比如上图中的${AnsiColor.BRIGHT_YELLOW}


  • ${AnsiColor.BRIGHT_RED}:设置控制台中输出内容的颜色
  • ${application.version}:用来获取MANIFEST.MF文件中的版本号
  • ${application.formatted-version}:格式化后的${application.version}版本信息
  • ${spring-boot.version}Spring Boot的版本号
  • ${spring-boot.formatted-version}:格式化后的${spring-boot.version}版本信息


Banner接口


在未指定banner.txtbanner图片时,默认图形存储在哪里了呢?下面我们了解一下Banner接口。

















@FunctionalInterfacepublic interface Banner {
  // 打印banner  void printBanner(Environment environment, Class<?> sourceClass, PrintStream out);
  enum Mode {    // 关闭    OFF,    // 控制台    CONSOLE,    // 日志文件    LOG  }}

banner接口中提供了打印banner的方法和一个枚举类。枚举类有三个值:OFFCONSOLELOG,用来控制banner的打印,分别对应:关闭打印、控制台打印和日志打印。


banner接口的实现主要有ResourceBannerImageBannerSpringBootBanner和其他内部类的实现。其中上面看到的图形的打印就来自于SpringBootBanner。看一下源代码:


































class SpringBootBanner implements Banner {
  private static final String[] BANNER = { "",      "  .   ____          _            __ _ _",      " /\\\\ / ___'_ __ _ _(_)_ __  __ _ \\ \\ \\ \\",      "( ( )\\___ | '_ | '_| | '_ \\/ _` | \\ \\ \\ \\",      " \\\\/  ___)| |_)| | | | | || (_| |  ) ) ) )",      "  '  |____| .__|_| |_|_| |_\\__, | / / / /",      " =========|_|==============|___/=/_/_/_/" };
  private static final String SPRING_BOOT = " :: Spring Boot :: ";
  private static final int STRAP_LINE_SIZE = 42;
  @Override  public void printBanner(Environment environment, Class<?> sourceClass,      PrintStream printStream) {    for (String line : BANNER) {      printStream.println(line);    }    String version = SpringBootVersion.getVersion();    version = (version != null) ? " (v" + version + ")" : "";    StringBuilder padding = new StringBuilder();    while (padding.length() < STRAP_LINE_SIZE        - (version.length() + SPRING_BOOT.length())) {      padding.append(" ");    }
    printStream.println(AnsiOutput.toString(AnsiColor.GREEN, SPRING_BOOT,        AnsiColor.DEFAULT, padding.toString(), AnsiStyle.FAINT, version));    printStream.println();  }}

printBanner的方法实现中,首先打印了默认的Banner字符串数组,然后将SPRING_BOOT和版本信息进行拼接打印。


Banner的参数设置


banner的参数设定可以通过两种形式,一种是代码的形式,一种是配置文件的形式。


使用代码的形式首先要将默认的main方法进行改造,手动创建SpringApplication对象,然后设置相应的参数。示例代码:










public static void main(String[] args) {
  SpringApplication app = new SpringApplication(SpringbootBannerApplication.class);  app.setBannerMode(Banner.Mode.CONSOLE);
  Banner banner = new ImageBanner(new ClassPathResource("banner1.png"));  app.setBanner(banner);  app.run(args);}

通过配置文件设置就比较简单,直接在application.properties中进行配置,springboot已经帮我们预制好了相应的参数。









spring.banner.location=classpath:banner1.pngspring.banner.image.margin=2spring.banner.image.height=76spring.banner.charset=UTF-8spring.banner.image.invert=falsespring.banner.image.location=banner1.pngspring.main.banner-mode=consolespring.main.show-banner=true

其中spring.main.show-banner来控制是否打印banner,在新版本中不建议使用,可以使用spring.main.banner-mode代替,将其值设置为OFF即可关闭banner的打印。


引入文本banner通过spring.banner.location来指定,引入图片相关的banner需要通过spring.banner.image.location来指定路径,否则会出现乱码情况。


如果不想显示banner,可以在代码中通过setBannerMode(Banner.Mode.OFF)方法或通过参数配置spring.main.banner-mode=off来关闭banner的打印。上面示例中已经有所展示。



目录
相关文章
|
1月前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
|
12天前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
20天前
|
XML JSON Java
【SpringBoot(三)】从请求到响应再到视图解析与模板引擎,本文带你领悟SpringBoot请求接收全流程!
Springboot专栏第三章,从请求的接收到视图解析,再到thymeleaf模板引擎的使用! 本文带你领悟SpringBoot请求接收到渲染的使用全流程!
113 4
|
1月前
|
Java 数据库 数据安全/隐私保护
Spring Boot四层架构深度解析
本文详解Spring Boot四层架构(Controller-Service-DAO-Database)的核心思想与实战应用,涵盖职责划分、代码结构、依赖注入、事务管理及常见问题解决方案,助力构建高内聚、低耦合的企业级应用。
539 1
|
7月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
1868 1
|
6月前
|
前端开发 安全 Java
Spring Boot 便利店销售系统项目分包设计解析
本文深入解析了基于Spring Boot的便利店销售系统分包设计,通过清晰的分层架构(表现层、业务逻辑层、数据访问层等)和模块化设计,提升了代码的可维护性、复用性和扩展性。具体分包结构包括`controller`、`service`、`repository`、`entity`、`dto`、`config`和`util`等模块,职责分明,便于团队协作与功能迭代。该设计为复杂企业级应用开发提供了实践参考。
251 0
|
3月前
|
前端开发 Java 数据库连接
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
|
3月前
|
机器学习/深度学习 XML Java
【spring boot logback】日志logback格式解析
在 Spring Boot 中,Logback 是默认的日志框架,它支持灵活的日志格式配置。通过配置 logback.xml 文件,可以定义日志的输出格式、日志级别、日志文件路径等。
602 5
|
3月前
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
323 3

推荐镜像

更多
  • DNS