最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot詳解Banner的使用

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

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

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

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

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

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

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

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

Banner printedBanner = printBanner(environment);

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

	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);
	

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

接下來程序會根據(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);
	}

我們重點先關(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方法首先會嘗試通過getImageBanner加載圖片的banner,從配置文件的"spring.banner.image.location"配置項來拼接后綴gif、jpg、png,讀取相應(yīng)的文件,返回一個ImageBanner對象,添加到banners;

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

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

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

而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打印到控制臺上。

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

相關(guān)文章

  • RocketMQ中的通信模塊詳解

    RocketMQ中的通信模塊詳解

    這篇文章主要介紹了RocketMQ中的通信模塊詳解,RocketMQ消息隊列集群主要包括NameServer、Broker(Master/Slave)、Producer、Consumer4個角色,本文我們簡單來講解一下,需要的朋友可以參考下
    2024-01-01
  • Java設(shè)計模式之策略模式示例詳解

    Java設(shè)計模式之策略模式示例詳解

    策略模式屬于Java?23種設(shè)計模式中行為模式之一,該模式定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響使用算法的客戶。本文將通過示例詳細(xì)講解這一模式,需要的可以參考一下
    2022-08-08
  • Gauva使用ListenableFuture介紹說明

    Gauva使用ListenableFuture介紹說明

    并發(fā)是一個困難問題,但是通過強(qiáng)大和強(qiáng)大的抽象能夠顯著的簡化工作。為了簡化問題,Gauva使用ListenableFuture擴(kuò)展了JDK的Future接口,這篇文章主要介紹了Gauva使用ListenableFuture
    2023-01-01
  • Java 調(diào)整格式日志輸出

    Java 調(diào)整格式日志輸出

    本文主要介紹Java 的日志輸出格式,在開發(fā)java的時候會經(jīng)??慈罩具M(jìn)行調(diào)試或者查看錯誤,這里給大家介紹日志輸出調(diào)整格式,以便大家看日志的時候更加方便,
    2016-07-07
  • java利用正則表達(dá)式處理特殊字符的方法實例

    java利用正則表達(dá)式處理特殊字符的方法實例

    這篇文章主要給大家介紹了關(guān)于java利用正則表達(dá)式處理特殊字符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • java實現(xiàn)模擬USB接口的功能

    java實現(xiàn)模擬USB接口的功能

    本文主要介紹了java實現(xiàn)模擬USB接口的功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Spring超詳細(xì)講解AOP面向切面

    Spring超詳細(xì)講解AOP面向切面

    面向?qū)ο缶幊淌且环N編程方式,此編程方式的落地需要使用“類”和 “對象”來實現(xiàn),所以,面向?qū)ο缶幊唐鋵嵕褪菍?nbsp;“類”和“對象” 的使用,面向切面編程,簡單的說,就是動態(tài)地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程
    2022-10-10
  • JAVA找不到符號的三種解決方案

    JAVA找不到符號的三種解決方案

    這篇文章主要給大家介紹了關(guān)于JAVA找不到符號的三種解決方案, 找不到符號錯誤主要發(fā)生在我們試圖引用一個未在我們正在編譯的程序中聲明的變量時,這意味著編譯器不知道我們所引用的Java變量,需要的朋友可以參考下
    2024-03-03
  • Java如何實現(xiàn)一個簡化版的Stream框架

    Java如何實現(xiàn)一個簡化版的Stream框架

    這篇文章主要為大家詳細(xì)介紹了一個簡化版的 Stream 實現(xiàn),展示了如何通過延遲執(zhí)行來處理數(shù)據(jù)流,感興趣的小伙伴可以跟隨小編一學(xué)習(xí)一下
    2024-10-10
  • java調(diào)用中國天氣網(wǎng)api獲得天氣預(yù)報信息的方法

    java調(diào)用中國天氣網(wǎng)api獲得天氣預(yù)報信息的方法

    這篇文章主要介紹了java調(diào)用中國天氣網(wǎng)api獲得天氣預(yù)報信息的方法,可實現(xiàn)調(diào)用溫度、風(fēng)力風(fēng)向及近期天氣狀況等功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

年辖:市辖区| 格尔木市| 黔东| 方正县| 鸡泽县| 柘城县| 游戏| 塔河县| 西畴县| 渝中区| 剑河县| 扎兰屯市| 连云港市| 屏南县| 五大连池市| 建水县| 改则县| 奉节县| 五指山市| 阿勒泰市| 曲麻莱县| 正蓝旗| 石狮市| 新郑市| 泸水县| 曲靖市| 南岸区| 郧西县| 五常市| 西充县| 全椒县| 敦煌市| 永顺县| 彰武县| 织金县| 泰兴市| 石阡县| 高碑店市| 泸州市| 临漳县| 上犹县|