欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot詳解Banner的使用

 更新時(shí)間:2022年07月15日 09:39:52   作者:lhf2112  
這篇文章主要介紹了超個(gè)性修改SpringBoot項(xiàng)目的啟動(dòng)banner的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Banner的設(shè)置方式有以下幾種

1、默認(rèn):SpringBoot + 版本號(hào);

2、添加自定義資源文件:banner.txt;

3、添加自定義資源文件:banner.jpg/png/gif;

4、SpringApplication的setBanner方法,自定義資源;

下面我們進(jìn)入源碼,SpringBoot如何實(shí)現(xiàn)banner的加載:

進(jìn)入SpringApplication的run方法,可以看到如下的一行內(nèi)容:

Banner printedBanner = printBanner(environment);

這個(gè)就是獲取banner的入口,我們來跟進(jìn)下這個(gè)方法:

	private Banner printBanner(ConfigurableEnvironment environment) {
		if (this.bannerMode == Banner.Mode.OFF) {
			return null;
		}
		ResourceLoader resourceLoader = (this.resourceLoader != null) ? this.resourceLoader
				: new DefaultResourceLoader(getClassLoader());
		SpringApplicationBannerPrinter bannerPrinter = new SpringApplicationBannerPrinter(resourceLoader, this.banner);
		if (this.bannerMode == Mode.LOG) {
			return bannerPrinter.print(environment, this.mainApplicationClass, logger);
		}
		return bannerPrinter.print(environment, this.mainApplicationClass, System.out);
	

代碼首先檢驗(yàn)是否關(guān)閉了banner(可以通過spring.main.banner-mode=off來配置),Banner.Mode的取值方式有三種,包括OFF、CONSOLE(控制臺(tái),默認(rèn))以及LOG(日志)。如果是關(guān)閉狀態(tài),那么直接返回空。

接下來程序會(huì)根據(jù)模式是CONSOLE或是LOG來分別進(jìn)行處理。處理過程比較相似,我們先看LOG方式打印的方法:

	Banner print(Environment environment, Class<?> sourceClass, Log logger) {
		Banner banner = getBanner(environment);
		try {
			logger.info(createStringFromBanner(banner, environment, sourceClass));
		}
		catch (UnsupportedEncodingException ex) {
			logger.warn("Failed to create String for banner", ex);
		}
		return new PrintedBanner(banner, sourceClass);
	}

我們重點(diǎn)先關(guān)注getBanner方法:

	private Banner getBanner(Environment environment) {
		Banners banners = new Banners();
		banners.addIfNotNull(getImageBanner(environment));
		banners.addIfNotNull(getTextBanner(environment));
		if (banners.hasAtLeastOneBanner()) {
			return banners;
		}
		if (this.fallbackBanner != null) {
			return this.fallbackBanner;
		}
		return DEFAULT_BANNER;
	}

getBanner方法首先會(huì)嘗試通過getImageBanner加載圖片的banner,從配置文件的"spring.banner.image.location"配置項(xiàng)來拼接后綴gif、jpg、png,讀取相應(yīng)的文件,返回一個(gè)ImageBanner對(duì)象,添加到banners;

如果沒有圖片的banner,則會(huì)通過getTextBanner方法獲取txt,從配置文件的"spring.banner.location"獲取配置項(xiàng),默認(rèn)為banner.txt,讀取文件,返回ResourceBanner對(duì)象,添加到banners;

這時(shí)如果banners還是空的,說明沒有ImageBanner和ResourceBanner被配置,但是有手動(dòng)設(shè)置的fallbackBanner,那么就會(huì)返回它,fallbackBanner就是通過setBanner方法加入的banner。否則就返回不含有自定義信息的,系統(tǒng)默認(rèn)banner。

LOG方式下,會(huì)調(diào)用logger來進(jìn)行info級(jí)別的日志輸出。

而CONSOLE方式的情況下,方法如下:

	Banner print(Environment environment, Class<?> sourceClass, PrintStream out) {
		Banner banner = getBanner(environment);
		banner.printBanner(environment, sourceClass, out);
		return new PrintedBanner(banner, sourceClass);
	}

這里的getBanner方法和LOG方式是一樣的,在這就不再贅述了。與LOG方式不同的是,這種方式是通過System.out標(biāo)準(zhǔn)輸出流,將banner打印到控制臺(tái)上。

到此這篇關(guān)于SpringBoot詳解Banner的使用的文章就介紹到這了,更多相關(guān)SpringBoot Banner內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決IDEA中pom.xml文件變?yōu)榛疑膯栴}

    解決IDEA中pom.xml文件變?yōu)榛疑膯栴}

    這篇文章主要給大家介紹了如何解決IDEA中pom.xml文件變?yōu)榛疑膯栴},文中通過圖文結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • Springboot+Flowable?快速實(shí)現(xiàn)工作流的開發(fā)流程

    Springboot+Flowable?快速實(shí)現(xiàn)工作流的開發(fā)流程

    這篇文章主要介紹了Springboot+Flowable?快速實(shí)現(xiàn)工作流的開發(fā)流程,本文通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • JavaFx 實(shí)現(xiàn)按鈕防抖功能

    JavaFx 實(shí)現(xiàn)按鈕防抖功能

    最近Sun公司推出了JavaFX框架,使用它可以利用JavaFX編程語言來開發(fā)富互聯(lián)網(wǎng)應(yīng)用程序(RIA),這篇文章主要介紹了JavaFx 實(shí)現(xiàn)按鈕防抖功能,需要的朋友可以參考下
    2022-01-01
  • Java實(shí)現(xiàn)高校教務(wù)系統(tǒng)

    Java實(shí)現(xiàn)高校教務(wù)系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)高校教務(wù)系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機(jī)名

    使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機(jī)名

    這篇文章主要介紹了使用Java代碼獲取服務(wù)器性能信息及局域網(wǎng)內(nèi)主機(jī)名的方法,方便對(duì)服務(wù)器的遠(yuǎn)程管理和團(tuán)隊(duì)協(xié)作時(shí)用到,而且文中的方法無需調(diào)用jni,需要的朋友可以參考下
    2015-11-11
  • springboot本地調(diào)試沒問題,打包運(yùn)行報(bào)錯(cuò)原因及分析

    springboot本地調(diào)試沒問題,打包運(yùn)行報(bào)錯(cuò)原因及分析

    這篇文章主要介紹了springboot本地調(diào)試沒問題,打包運(yùn)行報(bào)錯(cuò)原因及分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • JavaWeb開發(fā)入門第一篇必備知識(shí)講解

    JavaWeb開發(fā)入門第一篇必備知識(shí)講解

    JavaWeb開發(fā)入門第一篇主要內(nèi)容介紹的是必備知識(shí)、基礎(chǔ)知識(shí)、搭建JavaWeb應(yīng)用開發(fā)環(huán)境,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Java 面試題和答案 - (下)

    Java 面試題和答案 - (下)

    本文主要介紹Java 面試題,這里整理了Java面試題關(guān)于JDBC,線程異常處理,Servlet,JSP的知識(shí)的整理,幫助大家理解知識(shí)點(diǎn),便于面試,有興趣的小伙伴可以參考下
    2016-09-09
  • postman?如何實(shí)現(xiàn)傳遞?ArrayList?給后臺(tái)

    postman?如何實(shí)現(xiàn)傳遞?ArrayList?給后臺(tái)

    這篇文章主要介紹了postman?如何實(shí)現(xiàn)傳遞?ArrayList給后臺(tái),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 使用Maven進(jìn)行多模塊項(xiàng)目管理的操作步驟

    使用Maven進(jìn)行多模塊項(xiàng)目管理的操作步驟

    使用Maven進(jìn)行多模塊項(xiàng)目管理可以清晰組織大型項(xiàng)目結(jié)構(gòu),便于維護(hù)和構(gòu)建,詳細(xì)步驟包括創(chuàng)建父項(xiàng)目,設(shè)置pom.xml,創(chuàng)建子模塊,并配置子模塊的pom.xml,在父項(xiàng)目中管理依賴,通過命令行構(gòu)建項(xiàng)目,確保配置一致性
    2024-10-10

最新評(píng)論