SpringBoot中banner怎么使用

制作自己的banner

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

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

SpringBoot中banner怎么使用

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

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

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

登录后复制

在新版本的SpringBoot中,支持了gif、jpg和png的图片形式的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.txt或banner图片时,默认图形存储在哪里了呢?下面我们了解一下Banner接口。

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

登录后复制

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

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

  1. 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对象,然后设置相应的参数。示例代码:

  1. 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已经帮我们预制好了相应的参数。

  1. 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的打印。上面示例中已经有所展示。

以上就是SpringBoot中banner怎么使用的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
编程技术

SpringBoot中logback日志怎么保存到mongoDB

2025-3-7 0:50:07

编程技术

Idea中Springboot热部署无效怎么解决

2025-3-7 0:50:13

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索