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

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)文章

  • RocketMQ中的通信模塊詳解

    RocketMQ中的通信模塊詳解

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

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

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

    Gauva使用ListenableFuture介紹說明

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

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

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

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

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

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

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

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

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

    JAVA找不到符號(hào)的三種解決方案

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

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

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

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

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

最新評(píng)論

柘荣县| 正镶白旗| 高州市| 桂平市| 玉林市| 永福县| 普兰店市| 巴青县| 朝阳县| 秦皇岛市| 邹城市| 桦川县| 建阳市| 高安市| 丰县| 繁昌县| 额尔古纳市| 武穴市| 筠连县| 巩义市| 河池市| 天水市| 马鞍山市| 嘉禾县| 海盐县| 中宁县| 台南市| 淮阳县| 四会市| 恭城| 司法| 手游| 竹北市| 剑川县| 容城县| 卫辉市| 普宁市| 永靖县| 吉水县| 高平市| 十堰市|