如何让你的Spring Boot屌炸天?(一)

简介: 大家好,我是指北君。今天就只有一个目的,就是要让你屌炸天!

前言


今天,我给大家来讲讲如何让你的 Spring Boot 屌炸天,自定义 banner 。有些新入门的朋友可能会不知道 banner 是什么?它在哪里?我在哪里见过它吗?这3连门是不是很有意思。我们今天所说的 banner 如下图所示,想必大家在启动 Spring Boot 项目的时候,大家都见过吧。

50.jpg

大家可能都见过永不宕机的佛祖的 banner 图片吧。下图,大家应该都很熟悉吧。

51.jpg

今天我就来带大家来看看源码,看看这个 banner 到底是怎么实现的。


Spring Boot 内置 3 种 Banner打印方式


从下图可以看出,Spring Boot 支持打印的Banner 方式有3种, SpringBootBanner 是Spring Boot 默认的 Banner 打印方式, ResouceBanner 是文本类型的 Banner 打印方式, ImageBanner 是图片类型的 Banner 打印方式。


52.png

我们来看看 Banner 接口,从下方的代码,我们可以了解到,Banner 接口包含一个 printBanner 的方法 和 Mode 的枚举,Mode 包含三种状态,其中 OFF 表示不打印 Banner , LOG 表示把 Banner 输出到日志文件中, CONSOLE 表示输出到控制台,也是我们比较常见的方式。


53.png

Banner 打印流程


从 SpringApplication 类的 run 方法可以看出,printBanner 方法在 prepareEnvironment 之后,这是因为 application.properties 中有一些关于 Banner 的配置项。需要先解析 application.properties 的值,并将其绑定到对应的 bean 之后,再进行后续的操作。



54.png

printBanner 具体的流程如下:

  1. 判断 bannerMode,如果是 OFF,表示不打印。如果是 LOG,表示打印到文件,否则打印到控制台。
  2. SpringApplicationBannerPrinter 依据指定位置是是否存在文件,判断 Banner 类型是文本还是图片,文本类型使用 ResourceBanner, 图片类型使用 ImageBanner, 如果都不是,使用 Spring Boot 默认的 SpringBootBanner。
  3. SpringApplicationBannerPrinter#print 方法调用 Banner 对象的的 printBanner 方法。不同类型的 Banner 的 printBanner 方法实现不同。

如下是 Banner 对象的获得方法,可以看出,Spring Boot 首先获得 ImageBanner,然后是 ResourceBanner,需要注意的是,这两者可以同时存在,此时会一次性打印两种 Banner。如果都不满足,还会去获得 fallbackBanner,这个是用户自己设定的 Banner,但是我们基本很少使用,大部分情况我们使用了 Spring Boot 内置的 SpringBootBanner。


55.png56.png


如何关闭 Spring Boot 的 Banner


从 SpringApplication#printBanner 方法可以看出。当我们将 bannerMode 设置为 Banner.Mode.OFF 的时候,该方法返回 null,也就是此时不会打印 Banner。所以只要设置 bannerMode 为 OFF ,我们就能关闭 Banner 功能。


57.png


相关文章
|
6月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
145 0
|
6月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
170 0
|
9天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
21 2
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
55 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
64 2
|
5月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
54 2
|
5月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
63 2
|
5月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
435 1
|
5月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
55 1
|
5月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
157 0
下一篇
无影云桌面