• 让你的SpringBoot更有个性, 定制酷炫Banner


    前言

    在进行SpringCloud进行开发的时候,不知道朋友们有没有注意到你的SpringBoot微服务启动的时候的日志里会出现启动画面; 如下图所示

    特别的酷炫有风格; 这个方式可以非常简单的通过SpringBoot里提供的SPI的方式得以实现; 今天我们要给大家介绍的就是通过几行代码,来显示这样的效果,虽然这里没有太多的技术含量,但是可以给我们的SpringCloud或者SpringBoot微服务,和我们自行开发的Starter带来更多的个性;笔者开发的很多定制化的starter都是用这样的方法来增加个性;同时我们通过这个文章对SpringBoot的SPI机制和扩展来个抛砖引玉;带出以后有关SpringBoot SPI更深入的观点探讨。

    SpringBoot SPI

    今天我们这里介绍的方法,是通过SpringBoot提供的SPI机制进行实现的; SpringBoot的SPI机制是对Spring Framework Core这块提供的SPI的引用; 在还没有SpringBoot的时候,Spring Framework就已经提供了SPI的机制,SPI同学们需要去了解下, Java有SPI, Dubbo有SPI, 实现IOC的一种方式; Spring Framework里提供了Handler和Factory两种方式, 对于的就是Meta-INFo下的spring.handlers和spring.factories两个文件,前者对于的是Spring Framework的xml方式的Spring Configuraiton Loader, 后者spring.factories就是在Spring Boot里应用非常广泛的Bean AutoConfiguration的Loader加载方式。 今天我们使用的就是后者。

    定制Banner类

    创建自定义BannerInitializer类,来实现上图中酷炫的效果

    1. /**
    2. * @program: https://www.joinsunsoft.com
    3. * @description:
    4. * @author: LiuYong
    5. * @create: 2021-09-20 13:38
    6. */
    7. public class BannerInitializer implements ApplicationContextInitializer {
    8. public BannerInitializer(){
    9. }
    10. private String logPath = "/logo/slant.txt";
    11. private String product = "Central Platform";
    12. @Override
    13. public void initialize(ConfigurableApplicationContext applicationContext) {
    14. if (!(applicationContext instanceof AnnotationConfigApplicationContext)) {
    15. LogoBanner logoBanner = new LogoBanner(BannerInitializer.class, this.logPath, "Welcome to joinsunsoft.", 1, 6, new Color[5], true);
    16. CustomBanner.show(logoBanner, new Description(BannerConstant.VERSION + ":", CommonConstant.PROJECT_VERSION, 0, 1)
    17. , new Description("Product:", this.product, 0, 1)
    18. , new Description("WebSite:", "https://www.ginghan.com", 0, 1)
    19. , new Description("Vendor:", "https://www.joinsunsoft.com", 0, 1)
    20. );
    21. }
    22. }
    23. }

    上面代码中, logPath是Banner中图形对应的文件; initialize方法中对应的都是Banner下方的版本描述信息;

    Banner文件

    网上“文字艺术字在线工具” 可以将文字转换成文字图, 如jionsunsoft可以转换为, 文件对应为上个“ private String logPath = "/logo/slant.txt";” 中的路径

    1. _ _ _____
    2. (_)__ (_)__ ___ __ _____ ___ ___ / _/ /_
    3. / / _ \/ / _ \(_-// / _ \(_-
    4. __/ /\___/_/_//_/___/\_,_/_//_/___/\___/_/ \__/
    5. |___/ :: Central Platform :: (v4.6.0.RELEASE)

    spring.factories文件

    在meta-info下的spring.factories文件里,添加BannerInitializer类的自动加载信息。

    1. org.springframework.context.ApplicationContextInitializer=\
    2. com.joinsun.springcloud.core.banner.BannerInitializer

    大功告成

    现在启动咱们的SpringApplication入口类,就可以看到我们最上面的这样的效果了; SpringBoot提供了一些关于banner颜色和背景颜色以及版本号的获取AnsiColor和AnsiBackground提供了多种颜色供开发者选择;同时也支持其他的除文本外的格式,比如图片格式(jpeg/png等);这个笔者就没有深入去研究了,实在是有兴趣的朋友可以自行研究,并分享;

    结束语

    本文的创作内容对咱们的业务开发没有任何的价值和意义,笔者所写纯属为激发各位朋友在枯燥的代码研究中多一点轻松有趣的东西,当然还有一点是笔者希望的,就是本文提到的Banner虽然没多少技术含量,但是在这里涉及到了SpringBoot和Spring的SPI相关的应用, 这个是一个可以深入进去的话题; 如果朋友们有兴趣进一步深入SpringBoot的SPI机制和应用,可以在本文后进行留言; 想知悉哪些相关的技术点;咱们将进一步用文字来进行探究。 希望大家积极留言;持续关注;

    谢谢大家的关注;

  • 相关阅读:
    leetcode——腾讯企业真题--数组与字符串 11.字符串相乘
    常见的8个JMeter压测问题
    【数据结构基础_图】Leetcode 997.找到小镇的法官
    软件设计师第4题
    实用:AE/PR 视频交换格式哪家强?
    ADBMS1818芯片资料介绍(1)
    Python学习小组课程P4-Python办公(1)Excel保存
    怎样下载视频号视频?分享6种有效方法
    制作一个简单HTML公司官网网页设计(HTML+CSS)
    Linux命令(94)之history
  • 原文地址:https://blog.csdn.net/inthirties/article/details/126808800