• springboot banner


    spring boot banner的配置

    1、起因:

    最近项目中用到es,就引入了easy-es的jar,该jar中存在一banner.txt文件,于是项目启动的横幅就从spring变成了easy-es,那么如何选择自己想要的横幅呢?

    2、解决方案:

    1、因为springboot的banner设置都有包访问权限,扩展接口只有重写Banner接口实现类,太麻烦,我没有往下研究了。
    2、配置application
    修改配置文件,指定banner.txt位置

    spring:
      banner:
        location: classpath:banner.txt
    
    • 1
    • 2
    • 3
    3、源码逻辑

    首先:springboot默认的配置在文件spring-configuration-metadata.json中:

    {
          "name": "spring.banner.location",
          "type": "org.springframework.core.io.Resource",
          "description": "Banner text resource location.",
          "defaultValue": "classpath:banner.txt"
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    可见默认位置为:classpath:banner.txt
    添加配置:
    spring.banner.location:classpath:abanner.txt
    我们使用一个不存在的文件,这样springboot启动时就找不到banner文件了
    根据源码中:

    private Banner getBanner(Environment environment) {
         SpringApplicationBannerPrinter.Banners banners = new SpringApplicationBannerPrinter.Banners();
         banners.addIfNotNull(this.getImageBanner(environment));
         banners.addIfNotNull(this.getTextBanner(environment));
         if (banners.hasAtLeastOneBanner()) {
             return banners;
         } else {
         //没有banner,就使用默认的banner
             return this.fallbackBanner != null ? this.fallbackBanner : DEFAULT_BANNER;
         }
     }
     //默认的banner
    private static final Banner DEFAULT_BANNER = new SpringBootBanner();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    4、解决方案:

    1 、springboot启动使用默认的banner,即SpringBootBanner,当无banner.txt在resource文件夹下时,会打印spring图案
    2、springboot引入jar包存在banner.txt,会打印该文件内容
    3、指定banner.txt打印,我们可以自定义一个文件XXX.txt,然后再配置文件中配置,文件名不要用banner.txt,如此就可过滤掉引入jar中的图案
    spring.banner.location:classpath:XXX.txt,启动时就会打印该文件内容

    打印spring

    //使用springboot默认banner,并且屏蔽其他jar中的banner
    spring:
     banner:
     //自定义文件不存在
       location: classpath:mybanner.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    打印自定义文件

    //使用自定义banner,并且屏蔽其他jar中的banner
    spring:
     banner:
     //自定义文件存在
       location: classpath:mybanner.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    打印jar中的文件

    //使用自定义banner
    spring:
     banner:
     //自定义文件不存在
       location: classpath:banner.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    打印自定义的文件

    //使用自定义banner
    spring:
     banner:
     //自定义文件存在
       location: classpath:banner.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    Android桌面Launcher源码浅析
    Java中异或操作和OTP算法
    kafka知识点全方位讲解
    运维开发小白学习之路
    第二章:String类
    【VS编译报错:错误 1 error MSB6006: “cmd.exe”已退出,代码为 1。】
    2023年09月数据库流行度最新排名
    好文收藏|Clickhouse 常见问题及解决方案汇总
    uni-app:canvas-图形实现1
    5分钟生成10条短视频,AI重构电商营销
  • 原文地址:https://blog.csdn.net/qq_33684240/article/details/126605032