这里就引申出了本篇将要介绍的 Banner 信息打印流程。 :banner 信息打印接口类最后根据 bannerMode 的值不同,有下面两种 banner 信息打印模式:3.1 LOG 模式打印LOG 模式打印,可见如下:bannerPrinter.print 接口,该接口对应实际要打印的 Banner 信息的实现类。 Banner 信息打印的源码,相信如果上面的内容都看下来的话,完全熟悉 Banner 信息打印流程不再是个问题。 有了这些基础的知识,我们就可以来自定义 Banner 信息打印,敬请期待下篇博文!!!
《Spring Boot 源码学习系列》引言上篇博文,Huazie 带大家了解了完整的 Banner 信息打印流程。相信大家都跃跃一试了,那么本篇就以这些基础的知识,来自定义 Banner 信息打印。 打印 Banner 信息。 ,则会使用 ImageBanner 打印 Banner 信息。 =classpath:banner/mybanner.png然后,我们运行 DemoApplication 入口类,可见如下运行截图:2.3 添加自定义的图像显示信息查看 ImageBanner 的源码 Banner 信息打印,再次加深了对 Banner 信息打印流程的理解。
,也可以给打印的信息增加 css 样式,你甚至可以在控制台里打印图片! 一、 打印调试信息 console.debug('调试信息') 打印的调试信息可以在浏览器的 console -> levels 里面的 Verbose 里看到 二、打印普通信息 console.log ("普通信息") 打印信息 console.info("打印信息") 在谷歌浏览器中打印的效果和打印普通信息几乎一样。 ") 打印警告信息,调试的时候常用。 十一、打印错误信息 console.error("这是一个错误信息") 打印错误信息,调试的时候常用。
SpringBoot源码 | printBanner方法解析 printBanner printBanner方法用于打印在src/main/resources下名字是banner的自定义日志文件信息,对于整体的 SpringBoot启动流程来说不算主启动业务流程,但是也提供了自定义打印日志内容的可能,有一定存在的意义,所以这里也一起来看一下printBanner方法内部吧,printBanner方法源码加入注释后 是否允许打印banner信息 if (this.bannerMode == Banner.Mode.OFF) { return null; } //资源加载类 ,回到print方法打印banner.txt文本内容 通过构造方法返回PrintedBanner用于后续打印日志信息输出 其中构造方法中参数sourceClass是主程序类 到这里整个 banner日志信息 //
Spring Boot 系统初始化器详解 Spring Boot 监听器详解 Spring Boot banner详解 自定义banner Spring Boot 默认打印的banner是这样的,Java 一般的公司如果有自己脚手架,都会选择自定义banner,放一个公司Logo或者框架别名。 自定义banner 样式 光一个Logo也还是太单调,如果能再打印个Spring Boot 版本、应用程序版本就更好了,Spring Boot 都给我们提供了相关变量,可以在banner.txt中使用。 Spring Boot 提供了spring.main.banner-mode 配置,OFF-关闭banner打印,CONSOLE-使用System.out打印banner,log文件不会记录,LOG-打印到 log文件 另外同样可以用springApplication.setBannerMode(Banner.Mode.OFF);方式设置banner 加载打印原理 在之前的《Spring Boot 框架整体启动流程详解
22-SpringBoot流程分析-run SpringBoot流程分析-run 启动计时器 执行监听器 准备环境 打印banner:可以resource下粘贴自定义的banner 创建context 4.打印Banner信息 image-20220227172317638 可以看到这里打印了 Banner 信息。 5.将断点设置在打印Banner处,去除其他断点 好了,设置好断点之后,我们就可以修改设置一个 banner.txt 进行文件替换,然后再重新debug 进来看看效果。 6.设置 banner.txt ,替换打印的信息 _ooOoo_ o8888888o 佛祖保佑 永无BUG 再次debug启动服务,可以查看打印信息如下: 注意:如果没有,那么则执行 maven clean 后,再执行。
接下来将深入介绍启动Banner打印的具体实现及流程。 banner.printBanner(environment, sourceClass, out); // 返回一个 PrintedBanner 对象,包含打印的横幅和源类信息。 ", ex); } // 返回一个 PrintedBanner 对象,包含打印的横幅和源类信息。 // 默认的 Banner 实现,用于打印 "Spring" 的启动横幅,和版本信息 class SpringBootBanner implements Banner { // 预定义的 ASCII / 版本号 )); // 添加空行用于分隔横幅和其他输出 printStream.println(); } } 控制台效果 总结 本文全面解析了SpringBoot启动横幅的实现原理、打印流程及自定义方法
打印Banner Banner printedBanner = printBanner(environment); // 5. 自定义Banner的实现与实践 在Spring Boot启动过程中,控制台打印的Banner不仅是技术产品的一张"名片",更是开发者展示项目个性的绝佳机会。 的支持(2.x版本曾支持) 增强了对Unicode字符的支持 环境变量spring.banner.image.* 配置项有调整 实战调试技巧 要验证自定义Banner是否生效: 在SpringApplication.run 打印Banner(控制台图标) Banner printedBanner = printBanner(environment); // 4. =50 // 图片Banner宽度 spring.main.banner-mode=console/off/log // 编程式自定义(Spring Boot 3.2+) @Bean public
可以通过向类路径中添加一个banner.txt文件或设置spring.banner来更改在start up上打印的banner。属性指向此类文件的位置。 将gif、banner.jpg或banner.png图像文件保存到类路径或设置spring.banner.image。位置属性。图像被转换成ASCII艺术形式,并打印在任何文本横幅上面。 1. 自定义 banner 根据官方的描述,可以在类路径中自定义 banner 图案,我们进行尝试在放 resouce 目录下新建文件 banner.txt 并写入内容(在线字符生成)。 自定义 Banner Springboot 把图案转成了 ASCII 图案。 2. 3 /** 获取自定义banner文件信息 */ private Banner getImageBanner(Environment environment) { // BANNER_IMAGE_LOCATION_PROPERTY
1.在src/main/resources新建banner.txt 写入信息内容2.在application.properties#自定义打印 bannerspring.banner.location= classpath:banner.txtspring.banner.charset=utf-83.关闭bannerpublic static void ma... 今天说一说7.Spring-Boot自定义Banner,希望能够帮助大家进步!!! 1.在src/main/resources 新建banner.txt 写入信息内容 2.在application.properties #自定义打印banner spring.banner.location =classpath:banner.txt spring.banner.charset=utf-8 3.关闭banner 此代码由Java架构师必看网-架构君整理 public static void
banner Banner printedBanner = printBanner(environment); //创建ApplicationContext,根据WebApplicationType 计算启动需要的时间 Duration timeTakenToStartup = Duration.ofNanos(System.nanoTime() - startTime); //记录应用程序启动信息 banner 8、创建ApplicationContext 9、设置启动期间的度量记录类 10、准备应用程序上下文 11、刷新应用程序上下文 12、计算启动需要的时间 13、如果需要,记录应用程序启动信息 banner private Banner printBanner(ConfigurableEnvironment environment) { //banner关闭,不打印 if (this.bannerMode this.resourceLoader : new DefaultResourceLoader(null); //banner打印器 SpringApplicationBannerPrinter
,在这里我们可以很直观的看到它的执行顺序,是在打印banner的后面执行的; 4、加载所有的监听器 加载监听器也是从 META-INF/spring.factories 配置文件中加载的,与初始化不同的是 banner 信息 显而易见,这个流程就是用来打印控制台那个很大的spring的banner的,就是下面这个东东 那他在哪里打印的呢? 他在 SpringBootBanner.java 里面打印的,这个类实现了Banner 接口, 而且banner信息是直接在代码里面写死的; 有些公司喜欢自定义banner信息,如果想要改成自己喜欢的图标该怎么办呢 springboot错误信息,返回true则只打印异常信息 return false; } } 在 spring.factories 文件中注册异常报告器 # Error Reporters run方法2,实现 CommandLineRunner 接口既可运行" ); } } 启动springboot后就可以看到控制台打印的信息了 完 其实了解springboot
,在这里我们可以很直观的看到它的执行顺序,是在打印banner的后面执行的; 4、加载所有的监听器 加载监听器也是从 META-INF/spring.factories 配置文件中加载的,与初始化不同的是 banner 信息 显而易见,这个流程就是用来打印控制台那个很大的spring的banner的,就是下面这个东东 那他在哪里打印的呢? 他在 SpringBootBanner.java 里面打印的,这个类实现了Banner 接口, 而且banner信息是直接在代码里面写死的; 有些公司喜欢自定义banner信息,如果想要改成自己喜欢的图标该怎么办呢 springboot错误信息,返回true则只打印异常信息 return false; } } 在 spring.factories 文件中注册异常报告器 # Error Reporters 异常报告器 run方法2,实现 CommandLineRunner 接口既可运行" ); } } 启动springboot后就可以看到控制台打印的信息了 完 其实了解springboot启动原理对开发人员还是有好处的
23.2自定义横幅 通过将 banner.txt 文件添加到类路径或将 spring.banner.location 属性设置为此类文件的位置,可以更改启动时打印的横幅。 图像将转换为ASCII艺术表示,并打印在任何文本横幅上方。 在 banner.txt 文件中,您可以使用以下任何占位符: 表23.1。 您还可以使用 spring.main.banner-mode 属性来确定是否必须在 System.out ( console )上打印横幅,发送到配置的记录器( log ),或 者根本不产生横幅( off YAML将 off 映射到 false ,因此如果要在应用程序中禁用横幅,请务必添加引号,如以下示例所示: spring: main: banner-mode: "off" 23.3自定义SpringApplication 有关详细信息,请参阅 SpringApplicationBuilder Javadoc。
2.6 打印 Banner 信息 Banner printedBanner = printBanner(environment); printBanner 方法用于 Spring Boot 启动时的 Banner 信息打印。 想要深入了解 Banner 打印的读者们,请查看如下博文: 《Banner 信息打印流程》 《自定义 Banner 信息打印》 2.7 新建应用上下文 ConfigurableApplicationContext StartupInfoLogger 类用于在应用程序启动时记录应用信息,其中 logStarted 方法用于以 INFO 日志级别打印应用启动时间。 自定义处理逻辑:根据具体的业务需求,实现自定义的错误处理逻辑,比如回滚事务、关闭网络连接等。 有关这块更详细的内容,后续 Huazie 将专门出一篇讲解,敬请期待!!!
SpringBoot启动流程 SpringBoot启动流程涉及到的步骤相对来说容易理解,这里我先准备一个启动类 类需要标注@SpringBootApplication的注解,然后就可以直接以main deduceMainApplicationClass 后面继续跟进可以看到deduceMainApplicationClass()理解为推断推论主程序类,debug可以看到获取了main函数所在的主程序类 自定义 void initialize(ConfigurableApplicationContext applicationContext) { System.out.println("加载自定义 src/main/resources下放入名字是banner的自定义文件 Banner printedBanner = printBanner(environment); ,继续往下看 printBanner 打印配置的banner文本信息 banner文件路径在\src\main\resources\banner.txt,可以通过更该文件内容展示不同的启动成功信息
至此,ConfigurationEnvironment准备完毕,后面日志中开始输出banner信息。 5、第七步:打印banner Banner printedBanner = printBanner(environment); private Banner printBanner(ConfigurableEnvironment 这里的Banner是默认的,博主没有添加任何自定义的banner; 自定义Banner可以参考博文:趣味篇:SpringBoot自定义Banner。 至此,banner打印完毕,进入创建Spring应用上下文阶段。 logStartupInfo(context.getParent() == null); // 打印active profile的信息 logStartupProfileInfo(context);
第一章 springboot springboot启动流程 参考 https://blog.csdn.net/weixin_44947701/article/details/124055713 框架的初始化 Spring容器在进行初始化时,< bean>的信息封装成一个 BeanDefinition 对象,所有的 BeanDefinition 存储到一个名为 beanDefinitionMap 的 Map 7.bean的生命周期 实例化 --> 填充属性 --> 执行aware接口 --> 初始化 --> 可用状态 --> 销毁 第四章 banner解析 1.banner常见的配置方式 spring.banner.location 2.banner的获取原理 输出banner的逻辑 获取banner getIMGBanner getTextBanner 打印banner 3.banner输出原理 默认banner输出 先输出banner 指定内容 获取version信息 文本内容前后对其 文本内容染色 输出文本内容 文字banner输出 图片banner输出 读取图片文件流 输出图片内容 第五章 启动加载器/定时器 1.springboot
1.1 设置关闭 Banner在笔者的《Banner 信息打印流程》 中,第 2 小节就介绍了如何关闭 Banner 信息打印。 ); springApplication.run(args); }}1.2 设置自定义 Banner 打印对象在笔者的《自定义 Banner 信息打印》 中,第 4 小节就介绍了如何自定义 Banner 接口实现。 System.out.println(customConfiguration.getAuthor()); }}最后,我们运行 DemoApplication 中的 main 方法,从如下截图中可以看出这里已经打印了自定义类的属性值 :图片2.3 合并配置源信息无论是通过构造参数,还是通过 setSources 方法,对配置源信息进行指定,在 Spring Boot 中都会将其合并。
相信用过 Spring Boot 的朋友们一定在启动日志中见过类似如下的内容,比如在启动 Spring Boot 时,控制台默认会打印 Spring Boot Logo 以及版本信息,这是 Spring Boot 固定的还是可自定义的呢? 有三种模式:console/log/off # console 打印到控制台(通过 System.out) # log - 打印到日志中 # off - 关闭打印 spring.main.banner-mode /taag http://www.degraeve.com/img2txt.php 总结 默认 Spring Boot 会注册一个 SpringBootBanner 的单例 Bean,用来负责打印 Banner 一般自定义 Spring Boot Banner 是企业/团队/项目的 Slogan。