【转载】SpringBoot的自定义Banner设置

Spring Boot启动时会显示如下图标:

  1. . ____ _ __ _ _

  2. /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \

  3. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

  4. \\/ ___)| |_)| | | | | || (_| | ) ) ) )

  5. ' |____| .__|_| |_|_| |_\__, | / / / /

  6. =========|_|==============|___/=/_/_/_/

  7. :: Spring Boot :: (v1.3.3.RELEASE)

如果有人不喜欢这个输出,本文说一下怎么修改。

1. 第一种方式:修改的时候,进行设置,在Application的main方法中:

SpringApplication application = new SpringApplication(App.class);
/*
* Banner.Mode.OFF:关闭;
* Banner.Mode.CONSOLE:控制台输出,默认方式;
* Banner.Mode.LOG:日志输出方式;
/
application.setBannerMode(Banner.Mode.
OFF*);
application.run(args);

2. 第二种方式:修改banner.txt配置文件

在src/main/resouces下新建banner.txt,在文件中加入:

 
  1. #这个是MANIFEST.MF文件中的版本号

  2. ${application.version}

  3.  
  4. #这个是上面的的版本号前面加v后上括号

  5. ${application.formatted-version}

  6.  
  7. #这个是springboot的版本号

  8. ${spring-boot.version}

  9.  
  10. #这个是springboot的版本号

  11. ${spring-boot.formatted-version}

 
resource目录下面放入一个banner.txt文件,Spring Boot启动项目的时候就会优先启动这个文件中的内容。注意,不止在war包或者Fat Jar的resource目录放置会起效果,在任一插件的resource目录放置也可以生效。当然这里涉及到一个优先级的问题,在war包或Fat Jar中放置的优先级高于插件jar包的。

3. 第三种方式:重写接口Banner实现

SpringBoot提供了一个接口org.springframework.boot.Banner,他的实例可以被传给SpringApplication的setBanner(banner)方法。如果你闲得不行非要着重美化这个命令行输出的话,可以重写Banner接口的printBanner方法。

4. 第四种方式:在application.properties进行配置

在application.proerpties进行banner的显示和关闭:

 
  1. ### 是否显示banner,可选值[true|false]

  2. spring.main.show-banner=false


使用Spring Boot启动的jar包总是会显示一个Spring的图标:

 
  1. . ____ _ __ _ _

  2. /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \

  3. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

  4. \\/ ___)| |_)| | | | | || (_| | ) ) ) )

  5. ' |____| .__|_| |_|_| |_\__, | / / / /

  6. =========|_|==============|___/=/_/_/_/

  7. :: Spring Boot :: (v1.3.3.RELEASE)

  8.  

实际上Spring Boot在这个位置,放了一个彩蛋,我们是可以自定义这个图标的。
我们可以在resource目录下面放入一个banner.txt
文件,Spring Boot启动项目的时候就会优先启动这个文件中的内容。
这里给大家推荐两个个字符画生成的网站,我们可以利用生成的字符串放入这个banner.txt
文件:

http://www.network-science.de/ascii/
http://patorjk.com/software/taag/

“Spring”的这个字体使用的是在线生成工具中的“standard”类型的字体,字体可以在工具中选择对比一下

比如我生成一个star wars的图标:

 
  1. _______.___________. ___ .______

  2. / | | / \ | _ \

  3. | (----`---| |----` / ^ \ | |_) |

  4. \ \ | | / /_\ \ | /

  5. .----) | | | / _____ \ | |\ \----.

  6. |_______/ |__| /__/ \__\ | _| `._____|

  7.  
  8. ____ __ ____ ___ .______ _______.

  9. \ \ / \ / / / \ | _ \ / |

  10. \ \/ \/ / / ^ \ | |_) | | (----`

  11. \ / / /_\ \ | / \ \

  12. \ /\ / / _____ \ | |\ \----.----) |

  13. \__/ \__/ /__/ \__\ | _| `._____|_______/

  14.  

这样启动的时候


但是仅仅是这样看起来并不好看,还不如原来的图标好看呢。实际上Spring Boot为这个彩蛋提供了不少美化功能。
Spring Boot提供了一个枚举类AnsiColor
,这个类可以控制banner.txt中的字符颜色,而且非常容易使用。
比如我可以将字符设置成颜色:BRIGHT_YELLOW

 
  1. ${AnsiColor.BRIGHT_YELLOW}

  2. _______.___________. ___ .______

  3. / | | / \ | _ \

  4. | (----`---| |----` / ^ \ | |_) |

  5. \ \ | | / /_\ \ | /

  6. .----) | | | / _____ \ | |\ \----.

  7. |_______/ |__| /__/ \__\ | _| `._____|

  8.  
  9. ____ __ ____ ___ .______ _______.

  10. \ \ / \ / / / \ | _ \ / |

  11. \ \/ \/ / / ^ \ | |_) | | (----`

  12. \ / / /_\ \ | / \ \

  13. \ /\ / / _____ \ | |\ \----.----) |

  14. \__/ \__/ /__/ \__\ | _| `._____|_______/

  15.  

再重新启动项目,启动界面就会变成这个样子:

类似 ${AnsiColor.BRIGHT_YELLOW} 这种表达式,其实可以放置多个,启动界面上的颜色,总是会根据AnsiColor 的设置改变界面的颜色,这样启动的界面就会显示多种不同的颜色了。

除了这样美化的功能之外,启动界面很重要的功能就是要告诉我们这个项目的一些重要信息。

 
  1. `${application.version}` 这个是`MANIFEST.MF`文件中的版本号

  2. `${application.formatted-version}` 这个是上面的的版本号前面加v后上括号

  3. ` ${spring-boot.version}` 这个是springboot的版本号

  4. `${spring-boot.formatted-version}`同上

把以上信息通过${} 放入banner.txt中,就会打印出项目对应的信息。
这里放一个完整的demo:

 
  1. ${AnsiColor.BRIGHT_YELLOW}

  2. _______.___________. ___ .______ ____ __ ____ ___ .______ _______.

  3. / | | / \ | _ \ \ \ / \ / / / \ | _ \ / |

  4. | (----`---| |----` / ^ \ | |_) | \ \/ \/ / / ^ \ | |_) | | (----`

  5. \ \ | | / /_\ \ | / \ / / /_\ \ | / \ \

  6. .----) | | | / _____ \ | |\ \----. \ /\ / / _____ \ | |\ \----.----) |

  7. |_______/ |__| /__/ \__\ | _| `._____| \__/ \__/ /__/ \__\ | _| `._____|_______/

  8.  
  9. ${AnsiColor.BRIGHT_BLUE}

  10. ::: Project (version:${application.version}) ::: \(^O^)/ Spring-Boot ${spring-boot.version}

  11.  

启动就会是这一个样子:

如果颜色没有变,那么还需要设置:spring.output.ansi.enabled=ALWAYS


在2016年的最后一天,借用Spring Boot的Banner向各位程序猿同仁们问候一声:Happy New Year


接下来我们就来介绍一下这个轻松愉快的自定义banner功能。实现的方式非常简单,我们只需要在Spring Boot工程的/src/main/resources 目录下创建一个banner.txt 文件,然后将ASCII字符画复制进去,就能替换默认的banner了。
比如上图中的输出,就采用了下面的banner.txt 内容:

 
  1. ${AnsiColor.BRIGHT_GREEN}

  2. ## ## ### ######## ######## ## ## ## ## ######## ## ## ## ## ######## ### ########

  3. ## ## ## ## ## ## ## ## ## ## ### ## ## ## ## ## ## ## ## ## ## ## ##

  4. ## ## ## ## ## ## ## ## #### #### ## ## ## ## ## #### ## ## ## ## ##

  5. ######### ## ## ######## ######## ## ## ## ## ###### ## ## ## ## ###### ## ## ########

  6. ## ## ######### ## ## ## ## #### ## ## ## ## ## ## ######### ## ##

  7. ## ## ## ## ## ## ## ## ### ## ## ## ## ## ## ## ## ## ##

  8. ## ## ## ## ## ## ## ## ## ######## ### ### ## ######## ## ## ## ##

  9. ${AnsiColor.BRIGHT_RED}

  10. Application Version: ${application.version}${application.formatted-version}

  11. Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}

从上面的内容中可以看到,还使用了一些属性设置:

 
  1. `${AnsiColor.BRIGHT_RED}` :设置控制台中输出内容的颜色

  2. `${application.version}` :用来获取`MANIFEST.MF` 文件中的版本号

  3. `${application.formatted-version}` :格式化后的`${application.version}` 版本信息

  4. `${spring-boot.version}` :Spring Boot的版本号

  5. `${spring-boot.formatted-version}` :格式化后的`${spring-boot.version}` 版本信息

生成工具

如果让我们手工的来编辑这些字符画,显然是一件非常困难的差事。所以,我们可以借助下面这些工具,轻松地根据文字或图片来生成用于Banner输出的字符画。

http://patorjk.com/software/taag
http://www.network-science.de/ascii/
http://www.degraeve.com/img2txt.php

年终彩蛋

最后,奉上程序猿必备Banner “永不宕机佛祖”,祝大家:“新年快乐、永不宕机、永无Bug”!

 
  1. ${AnsiColor.BRIGHT_YELLOW}

  2. ////////////////////////////////////////////////////////////////////

  3. // _ooOoo_ //

  4. // o8888888o //

  5. // 88" . "88 //

  6. // (| ^_^ |) //

  7. // O\ = /O //

  8. // ____/`---'\____ //

  9. // .' \\| |// `. //

  10. // / \\||| : |||// \ //

  11. // / _||||| -:- |||||- \ //

  12. // | | \\\ - /// | | //

  13. // | \_| ''\---/'' | | //

  14. // \ .-\__ `-` ___/-. / //

  15. // ___`. .' /--.--\ `. . ___ //

  16. // ."" '< `.___\_<|>_/___.' >'"". //

  17. // | | : `- \`.;`\ _ /`;.`/ - ` : | | //

  18. // \ \ `-. \_ __\ /__ _/ .-` / / //

  19. // ========`-.____`-.___\_____/___.-`____.-'======== //

  20. // `=---=' //

  21. // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //

  22. // 佛祖保佑 永不宕机 永无BUG //

  23. ////////////////////////////////////////////////////////////////////

效果图:




作者:蝉鸣的雨
链接:https://www.jianshu.com/p/bfbcabc4af1d

猜你喜欢

转载自blog.csdn.net/CalabashGourd/article/details/86686788