• SpringBoot——关于banner


    springboot启动后,控制台会打印一个图案出来,这个图案就叫banner,如果不配置的话打印的是springboot默认的banner,像这个样子:

    这个banner是可以通过多种方式自定义的,也可以设置显示模式关闭banner;

    banner的显示模式

    显示模式可以通过SpringApplication.setBannerMode()或者SpringApplicationBuilder.bannerMode()或者配置文件的spring.main.banner-mode设置;

    显示模式:

    • CONSOLE:打印到System.out;(默认)
    • LOG:打印到log文件;
    • OFF:关闭banner;

    使用banner文本

    默认读取classpath下的banner.txt文本,也可以通过配置文件配置;

    例如在resources文件夹里添加一个banner.txt:

    启动springboot后就会打印:

    而不再是默认的sprinngboot的banner了;

    几个可以的生成banner的网址:

    使用banner图片

    默认读取classpath下的banner.gif或者banner.jpg或者banner.png图片,也可以通过配置文件配置;

    例如resources文件夹下有个这样的banner.gif:(两帧的gif,一帧打印A一帧打印B)

    启动会生成:(会将每一帧的图片按顺序全打印出来)

    classpath下的banner.jpg图片:

    生成:

    classpath下的banner.png图片:

    生成:

     banner图片只会读取一个,如果多个classpath下有同名的图片,按照classpath顺序使用最先读取到的同名图片;

    classapth下的不同格式图片读取优先级:banner.gif > banner.jpg > banner.bng;

    自定义banner类

    可以通过实现Banner接口的printBanner()方法,使用SpringApplication.setBanner()方法或者SpringApplicationBuilder.banner()方法将该实现类设置为banner;

    实现类MyBanner.java:(自定义banner类优先级比较低,去掉其他读取的banner再测试)

    1. package testspringboot.test4banner;
    2. import java.io.PrintStream;
    3. import org.springframework.boot.Banner;
    4. import org.springframework.boot.ansi.AnsiColor;
    5. import org.springframework.core.env.Environment;
    6. public class MyBanner implements Banner {
    7. @Override
    8. public void printBanner(Environment environment, Class sourceClass, PrintStream out) {
    9. String s = "HELLO WORLD\n"
    10. + "BANNER BANNER BANNER BANNER BANNER BANNER BANNER BANNER\n"
    11. + " BANNER BANNER BANNER BANNER BANNER BANNER BANNER BANNER\n"
    12. + " BANNER BANNER BANNER BANNER BANNER BANNER BANNER BANNER\n"
    13. + " BANNER BANNER BANNER BANNER BANNER BANNER BANNER BANNER\n"
    14. + "HELLO WORLD\n\n";
    15. out.print(s);
    16. }
    17. }

    启动类:

    1. /**
    2. * 2022年10月28日上午9:30:25
    3. */
    4. package testspringboot.test4banner;
    5. import org.springframework.boot.Banner.Mode;
    6. import org.springframework.boot.SpringApplication;
    7. import org.springframework.boot.WebApplicationType;
    8. import org.springframework.boot.autoconfigure.SpringBootApplication;
    9. import org.springframework.boot.builder.SpringApplicationBuilder;
    10. import org.springframework.context.annotation.PropertySource;
    11. /**
    12. * @author XWF
    13. *
    14. */
    15. @SpringBootApplication
    16. public class Test4Main {
    17. /**
    18. * @param args
    19. */
    20. public static void main(String[] args) {
    21. SpringApplication app = new SpringApplication(Test4Main.class);
    22. app.setWebApplicationType(WebApplicationType.NONE); //关闭web服务
    23. // app.setBannerMode(Mode.OFF); //关闭banner
    24. app.setBanner(new MyBanner()); //自定义Banner类
    25. app.run(args);
    26. // SpringApplicationBuilder builder = new SpringApplicationBuilder(Test4Main.class);
    27. // builder.web(WebApplicationType.NONE)
    28. // .bannerMode(Mode.OFF)
    29. // .banner(new MyBanner())
    30. // .run(args);
    31. }
    32. }

    执行结果:

    banner的配置文件

    properties或者yml里也可以对banner进行配置,相关配置如下:(似乎只能使用resources文件夹下的application.properties配置文件或者application.yml配置文件)

    1. #设置显示banner模式,默认CONSOLE
    2. #OFF:关闭打印banner
    3. #CONSOLE:打印到System.out
    4. #LOG:打印到log文件
    5. spring.main.banner-mode=console
    6. #设置banner的字符编码,默认utf-8
    7. spring.banner.charset=utf-8
    8. #设置banner文本资源的位置,默认classpath:banner.txt
    9. #支持classpath*:、classpath:、file:、http://和https://
    10. spring.banner.location=classpath:banner.txt
    11. #设置ANSI颜色的位深度,默认4
    12. #416
    13. #8256
    14. spring.banner.image.bitdepth=4
    15. #设置banner图像的高度(单位字符),默认图像高度
    16. spring.banner.image.height=20
    17. #设置banner图像的宽度,默认76
    18. spring.banner.image.width=100
    19. #是否为暗色系背景图片反转颜色,默认false
    20. spring.banner.image.invert=false
    21. #设置banner图片的位置,默认classpath:banner.gif(jpg和png也适用)
    22. spring.banner.image.location=classpath:banner.jpg
    23. #设置banner图片左边空白间隔,默认2
    24. spring.banner.image.margin=10
    25. #设置渲染图像时使用的像素模式
    26. #TEXT:使用文本字符
    27. #BLOCK:使用unicode块字符
    28. spring.banner.image.pixelmode=TEXT

    另外,banner.txt等的名称也可以改成别的,例如:banner.abc、xxx.a等等;

    banner优先级

    application.properties、application.yml配置文件的banner文本和图片 > classpath下的banner.txt/banner.gif/banner.jpg/banner.png > 自定义banner类 > springboot默认banner;

    如果同时有banner文本和banner图片,两者都会打印,先打印图片再打印文本;

    banner.txt里的可设置参数

    几个默认的可用参数:

    • MANIFEST.MF版本号:${application.version}
    • MANIFEST.MF格式化版本号:${application.formatted-version}
    • SpringBoot版本号:${spring-boot.version}
    • SpringBoot格式化版本号:${spring-boot.formatted-version}
    • MANIFEST.MF里的title:${application.title}

    也可以使用properties或者yml里自定义的配置参数,使用${}访问;

    例如:

    application.properties里设置:

    1. spring.banner.location=classpath:bannertest.txt
    2. mybanner.version=1.0.0
    3. say=hello world

    bannertest.txt:

    1. _________ _______ ________ _________ ___ ___
    2. |\___ ___\\ ___ \ |\ ____\|\___ ___\\ \ |\ \
    3. \|___ \ \_\ \ __/|\ \ \___|\|___ \ \_\ \ \\_\ \
    4. \ \ \ \ \ \_|/_\ \_____ \ \ \ \ \ \______ \
    5. \ \ \ \ \ \_|\ \|____|\ \ \ \ \ \|_____|\ \
    6. \ \__\ \ \_______\____\_\ \ \ \__\ \ \__\
    7. \|__| \|_______|\_________\ \|__| \|__|
    8. \|_________|
    9. MANIFEST.MF版本号:${application.version}
    10. MANIFEST.MF格式化版本号:${application.formatted-version}
    11. SpringBoot版本号:${spring-boot.version}
    12. SpringBoot格式化版本号:${spring-boot.formatted-version}
    13. MANIFEST.MF里的title:${application.title}
    14. 配置文件application.properties里定义的参数:
    15. mybanner.version:${mybanner.version}
    16. say:${say}

    打印结果:

     

    banner.txt里的颜色和字体

    springboot提供了3个枚举用来设置banner.txt里字符的颜色、背景色、字体:

    • AnsiColor:字符颜色
    • AnsiBackground:背景色
    • AnsiStyle:字体

    使用${AnsiColor.NAME}, ${AnsiBackground.NAME}, ${AnsiStyle.NAME} 可设置从标签开始到banner结束的颜色和字体,除非后面遇到下一个同类标签才会改变;

    例如:

    banner文本:

    1. _________ _______ ________ _________ ___ ___
    2. |\___ ___\\ ___ \ |\ ____\|\___ ___\\ \ |\ \
    3. \|___ \ \_\ \ __/|\ \ \___|\|___ \ \_\ \ \\_\ \
    4. \ \ \ \ \ \_|/_\ \_____ \ \ \ \ \ \______ \
    5. \ \ \ \ \ \_|\ \|____|\ \ \ \ \ \|_____|\ \
    6. \ \__\ \ \_______\____\_\ \ \ \__\ \ \__\
    7. \|__| \|_______|\_________\ \|__| \|__|
    8. \|_________|
    9. MANIFEST.MF版本号:${application.version}
    10. MANIFEST.MF格式化版本号:${application.formatted-version}
    11. SpringBoot版本号:${spring-boot.version}
    12. SpringBoot格式化版本号:${spring-boot.formatted-version}
    13. MANIFEST.MF里的title:${application.title}
    14. 配置文件application.properties里定义的参数:
    15. mybanner.version:${mybanner.version}
    16. say:${say}
    17. ${AnsiColor.RED}红色字红色字1234 ${AnsiColor.GREEN}绿色字绿色字1234 ${AnsiColor.BLUE}蓝色字蓝色字1234
    18. ${AnsiBackground.YELLOW}黄色背景@@@ ${AnsiBackground.CYAN}青色背景@@@ ${AnsiBackground.BRIGHT_BLUE}亮蓝色背景@@@ 后面加空格
    19. ${AnsiColor.BRIGHT_GREEN}${AnsiBackground.BRIGHT_CYAN}------------后-面-改-为-亮-绿-色-字-和-亮-青-色-背-景------------
    20. ${AnsiStyle.BOLD}BOLD ${AnsiStyle.FAINT}FAINT ${AnsiStyle.ITALIC}ITALIC ${AnsiStyle.UNDERLINE}UNDERLINE
    21. ${AnsiColor.DEFAULT}${AnsiBackground.DEFAULT}${AnsiStyle.NORMAL}还原到默认字还原到默认字还原到默认字

    运行结果:

  • 相关阅读:
    MySQL中find_in_set()函数用法详解
    MySQL 必现之死锁
    电脑技巧:PrivaZer电脑清理工具介绍
    【王道数据结构】第三章 栈和队列
    照片+制作照片书神器,效果太棒了!
    django rest framework 学习笔记2
    删除排序链表中的重复元素
    EEPROM、FLASH电路设计
    营销技术(Martech)的持续爆炸式增长,市场总监的工作变得更加艰难
    基于php+mysql的房屋销售管理系统
  • 原文地址:https://blog.csdn.net/FlyLikeButterfly/article/details/127630332