中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

怎么建網(wǎng)站鏈接效果最好的推廣軟件

怎么建網(wǎng)站鏈接,效果最好的推廣軟件,一流的錦州網(wǎng)站建設(shè),三河燕郊最新消息文章目錄 一、介紹二、演示環(huán)境三、自定義banner1. 文本2. 圖片3. placeholder占位符4. 關(guān)閉banner 四、源碼分析1. 關(guān)閉banner2. banner模式3. banner打印器4. 打印banner① 獲取banner② 打印banner 5. 版本號占位符的解析器6. 文本格式占位符的解析器7. 應(yīng)用標(biāo)題占位符的解析…

文章目錄

  • 一、介紹
  • 二、演示環(huán)境
  • 三、自定義banner
    • 1. 文本
    • 2. 圖片
    • 3. placeholder占位符
    • 4. 關(guān)閉banner
  • 四、源碼分析
    • 1. 關(guān)閉banner
    • 2. banner模式
    • 3. banner打印器
    • 4. 打印banner
      • ① 獲取banner
      • ② 打印banner
    • 5. 版本號占位符的解析器
    • 6. 文本格式占位符的解析器
    • 7. 應(yīng)用標(biāo)題占位符的解析器
  • 五、總結(jié)

一、介紹

Banner即橫幅的意思,我們在慶祝某些事情時有些顯眼包總會是拉個橫幅以表明意圖。

在我們啟動springboot項目時,springboot往往也會打印出一個默認(rèn)的橫幅,該橫幅中包含了一些信息如springboot版本號等,如下圖所示。

在這里插入圖片描述

既然有默認(rèn)的,當(dāng)然springboot也允許我們對banner進(jìn)行自定義設(shè)置,如將banner設(shè)置為文本、圖片,甚至關(guān)閉banner的輸出。如下所示

在這里插入圖片描述

是否略顯炫酷?下面我們來介紹如何自定義banner,并通過源碼進(jìn)行分析。

二、演示環(huán)境

本演示項目的環(huán)境如下:

  • java:1.8
  • springboot:2.4.3

三、自定義banner

1. 文本

當(dāng)我們需要自定義文本banner時,只需要在類路徑classpath下新建一個文件,文件名為banner.txt(springboot默認(rèn)),然后編輯作為banner的文本即可,如下所示。

在這里插入圖片描述

此時輸出如下

在這里插入圖片描述

如果不使用springboot默認(rèn)的banner文件名,則需要通過在配置文件中配置spring.banner.location,如下所示

在這里插入圖片描述

如果文件的編碼不是UTF-8,則可以在配置文件中通過spring.banner.charset配置字符集,如下所示

spring:banner:location: fozuBanner.txtcharset: UTF-32

2. 圖片

除了文本banner外,springboot還允許我們自定義圖片banner。并且如果兩種banner同時存在,則先輸出圖片banner、再輸出文本banner。

默認(rèn)地,springboot將從classpath類路徑下獲取banner.gif、banner.jpgbanner.png作為圖片banner。當(dāng)然也可以通過在配置文件中配置spring.banner.image.location來指定圖片的位置。

在輸出圖片banner時,springboot將會把圖片轉(zhuǎn)化成ASCII藝術(shù)畫輸出,而非無腦式地將圖片輸出。

如下圖所示,我們在類路徑下添加圖片,并將其命名為banner.png

在這里插入圖片描述

啟動項目后的輸出如下

在這里插入圖片描述

3. placeholder占位符

springboot允許我們在banner中使用${}格式的占位符,但僅限于文本banner。內(nèi)置的占位符有應(yīng)用版本、springboot版本、字體樣式、應(yīng)用名。下面我們一一介紹。

  • 應(yīng)用版本

    占位符為${application.version}${application.formatted-version}

    springboot允許我們在文本banner中添加應(yīng)用版本號。通過在文本banner中添加${application.version}${application.formatted-version}時,springboot從MANIFEST.MF中讀取Implementation-Version的值。

    例如,MANIFEST.MFImplementation-Version的值為1.0.0,則${application.version}得到的值為1.0.0${application.formatted-version}的值為v1.0.0,多了個前綴v。

    注意:該信息只有通過Spring Boot launchers方式啟動時才會生效。

  • springboot版本

    占位符為${spring-boot.version}${spring-boot.formatted-version}。

    獲取當(dāng)前項目使用的springboot的版本號,同樣的,后者會給前者獲取的值添加前綴v。如下圖所示

    在這里插入圖片描述

  • 字體樣式

    占位符為${AnsiColor.NAME}${AnsiBackground.NAME}、${AnsiStyle.NAME}

    當(dāng)我們使用${AnsiColor.RED}時,打印的字體將變成紅色;使用${AnsiBackground.YELLOW}時,背景顏色將變成黃色;使用${AnsiStyle.BOLD}時,將打印粗體。如下圖所示

    在這里插入圖片描述

  • 應(yīng)用名

    占位符為${application.title}。

    springboot允許我們在文本banner中添加應(yīng)用名稱。通過在文本banner中添加${application.title}時,springboot從MANIFEST.MF中讀取Implementation-Title的值。

    例如,MANIFEST.MFImplementation-Title的值為MyApp,則Implementation-Title得到的值為MyApp。

    注意:該信息只有通過Spring Boot launchers方式啟動時才會生效。

4. 關(guān)閉banner

我們介紹了文本banner、圖片banner后,接下來介紹如何關(guān)閉banner,關(guān)閉bannner后在項目啟動時便不再輸出banner。

方法當(dāng)然也很簡單,對于關(guān)閉bannner功能,springboot在SpringApplication類中提供了響應(yīng)的方法setBannerMode()來關(guān)閉banner。下面對我們的主啟動類進(jìn)行修改。

  • 修改前

    public static void main(String[] args){SpringApplication.run(BannerApplication.class, args);
    }
    
  • 修改后

    public static void main(String[] args){SpringApplication springApplication = new SpringApplication(BannerApplication.class);// 將bannner的模式設(shè)置為off,即關(guān)閉springApplication.setBannerMode(Banner.Mode.OFF);springApplication.run(args);
    }
    
  • 啟動項目

    在這里插入圖片描述

四、源碼分析

我們知道springboot是通過SpringApplication類中的run()方法啟動的,在該方法中調(diào)用printBanner()方法打印banner,如下圖所示

在這里插入圖片描述

下面我們進(jìn)入該方法

在這里插入圖片描述

1. 關(guān)閉banner

printBanner()方法中我們首先看到對bannerMode的判斷,如果是OFF,則直接返回null

if (this.bannerMode == Banner.Mode.OFF) {return null;
}

而前面我們在演示的時候提到過,springboot提供了對應(yīng)的方法。

public void setBannerMode(Banner.Mode bannerMode) {this.bannerMode = bannerMode;
}

我們看一下Banner.Mode為何物?

2. banner模式

Banner.Mode表示為Banner的模式,springboot提供了三種模式:OFF關(guān)閉、CONSOLE控制臺、LOG日志文件

在這里插入圖片描述

springboot默認(rèn)的banner模式為CONSOLE控制臺。

在這里插入圖片描述

3. banner打印器

printBanner()方法中創(chuàng)建了banner打印器實例,代碼如下所示

private Banner printBanner(ConfigurableEnvironment environment) {// ...SpringApplicationBannerPrinter bannerPrinter = new SpringApplicationBannerPrinter(resourceLoader, this.banner);// ...
}

在調(diào)用構(gòu)造方法實例化打印器時,傳入資源加載器兜底banner,兜底banner的含義為如果項目中沒有指定的文本banner或圖片banner時,則使用兜底banner,如果兜底banner依然不存在,最后才使用springboot默認(rèn)banner。

springboot提供了設(shè)置兜底banner的方法:

public void setBanner(Banner banner) {this.banner = banner;
}

與設(shè)置banner模式相同,在主啟動類中設(shè)置一個自定義的banner,該自定義banner必須實現(xiàn)Banner接口的printBanner()方法。

public static void main(String[] args){SpringApplication springApplication = new SpringApplication(BannerApplication.class);springApplication.setBanner(new CustomBanner());springApplication.run(args);
}

4. 打印banner

在完成banner打印器的實例化以后,就開始調(diào)用打印器的print()方法對banner進(jìn)行打印了,且打印器提供了兩個重載的的print()方法,分別用于日志模式和控制臺模式。這兩個重載方法的不同之處在第三個參數(shù)。如下所示

private Banner printBanner(ConfigurableEnvironment environment) {// ...if (this.bannerMode == Mode.LOG) {return bannerPrinter.print(environment, this.mainApplicationClass, logger);}return bannerPrinter.print(environment, this.mainApplicationClass, System.out);
}

這兩個重載方法的基本邏輯是相同的,即獲取banner、打印banner返回結(jié)果。我們以控制臺模式的print()方法為例。

Banner print(Environment environment, Class<?> sourceClass, PrintStream out) {// 獲取bannerBanner banner = getBanner(environment);// 打印bannerbanner.printBanner(environment, sourceClass, out);// 返回結(jié)果return new PrintedBanner(banner, sourceClass);
}

① 獲取banner

我們進(jìn)入getBanner()方法查看其實現(xiàn)

在這里插入圖片描述

該實現(xiàn)邏輯也很清晰,就是先后獲取圖片banner添加到banners中,如果banners中存在banner,則返回;否則返回兜底banner;如果兜底banner還不存在,則返回默認(rèn)banner

  • 獲取圖片banner

    獲取到的圖片banner用ImageBanner對象表示。

    在這里插入圖片描述

  • 獲取文本banner

    獲取到的文本banner用ResourceBanner對象表示。

    在這里插入圖片描述

  • 兜底banner

    前面我們在介紹banner打印器時,已經(jīng)詳細(xì)介紹過了。

  • 默認(rèn)banner

    默認(rèn)banner使用常量DEFAULT_BANNER表示為SpringBootBanner對象。如下所示

    在這里插入圖片描述

    進(jìn)入SpringBootBanner后發(fā)現(xiàn)發(fā)現(xiàn)我們再熟悉不過的默認(rèn)banner,原來藏在這里。

    在這里插入圖片描述

② 打印banner

前面在getBanner()方法中獲取到的banner集合被添加到Bannners中,注意一下,類BannersBanner的子類,在它實現(xiàn)的printBanner()方法中,通過遍歷內(nèi)部的banner集合并調(diào)用printBanner()方法對不同的banner進(jìn)行打印。

在這里插入圖片描述

下面我們對不同類型bannner的打印邏輯進(jìn)行分析

  • 圖片banner

    圖片banner被封裝在ImageBanner對象中,在打印圖片banner時,會對java.awt.headless的配置進(jìn)行處理,然后再調(diào)用其重載方法真正地輸出圖片banner。

    在這里插入圖片描述

    下面我們點擊重載printBanner()方法,查看其真正輸出圖片banner的邏輯。

    在這里插入圖片描述

    在該方法中,從配置中獲取圖片banner的寬高等基本樣式,然后將其輸出,在輸出過程中將圖片轉(zhuǎn)為ASCII藝術(shù)圖。

  • 文本banner

    文本banner被封裝在ResourceBanner對象中,我們進(jìn)入該類的printBanner()方法。

    該方法邏輯為將文本banner按照配置文件中spring.banner.charset指定的字符集轉(zhuǎn)換為對應(yīng)的banner字符串;然后獲取用于解析${}形式的占位符的解析器集合,利用解析器處理banner字符串中的占位符。最后將處理后的banner字符串輸出。

    在這里插入圖片描述

    下面我們看一下有哪些占位符解析器

    在這里插入圖片描述

    從源碼中,我們看到,有處理版本號的解析器、文本格式的解析器、應(yīng)用標(biāo)題的解析器。

5. 版本號占位符的解析器

獲取版本號占位符的解析器是通過getVersionResolver()方法完成的,如下圖所示,可以看到springboot內(nèi)置給我們獲取應(yīng)用版本號和springboot版本號的占位符。

在這里插入圖片描述

6. 文本格式占位符的解析器

獲取文本格式占位符的解析器是通過getAnsiResolver()方法完成的。如下圖所示,可以看到內(nèi)置了多種設(shè)置文本格式的方式。

在這里插入圖片描述

下面我們以設(shè)置文本格式和文本顏色為例

  • 文本格式

    文本格式通過AnsiStyle設(shè)置,所以我們點擊其對應(yīng)的AnsiStyle類,發(fā)現(xiàn)我們可以設(shè)置的文本格式如下

    在這里插入圖片描述

  • 文本顏色

    文本顏色通過AnsiColor設(shè)置,所以我們點擊其對應(yīng)的AnsiColor類,發(fā)現(xiàn)我們可以設(shè)置的文本顏色如下

    在這里插入圖片描述

7. 應(yīng)用標(biāo)題占位符的解析器

獲取應(yīng)用標(biāo)題占位符的解析器是通過getTitleResolver()方法完成的。如下圖所示。

在這里插入圖片描述

五、總結(jié)

  • 優(yōu)先級:圖片、文本banner > 兜底banner > 默認(rèn)bannner
  • 文本banner可以添加內(nèi)置的占位符如版本號、文本顏色、文本格式等。
  • 圖片banner的打印是將圖片轉(zhuǎn)為ASCII藝術(shù)圖后打印的。


紙上得來終覺淺,絕知此事要躬行。

————————————————我是萬萬歲,我們下期再見————————————————

http://www.risenshineclean.com/news/6597.html

相關(guān)文章:

  • wordpress 暗箱長春seo公司
  • 專業(yè)做網(wǎng)站咨詢互聯(lián)網(wǎng)營銷策劃是做什么的
  • asp綠色網(wǎng)站源碼什么是網(wǎng)站推廣
  • ps做網(wǎng)站要求高嗎企業(yè)qq一年多少費用
  • 慈溪做無痛同濟(jì) amp 網(wǎng)站如何宣傳推廣產(chǎn)品
  • 個人網(wǎng)站備案做論壇今天上海最新新聞事件
  • wordpress logo不顯示免費使用seo軟件
  • 如何建設(shè)企業(yè)人力資源網(wǎng)站蘇州seo培訓(xùn)
  • 近五年關(guān)于網(wǎng)站建設(shè)的參考文獻(xiàn)怎么快速優(yōu)化關(guān)鍵詞排名
  • 岳陽縣住房和城鄉(xiāng)建設(shè)局網(wǎng)站互聯(lián)網(wǎng)培訓(xùn)機(jī)構(gòu)排名前十
  • 江蘇設(shè)計網(wǎng)站電話網(wǎng)絡(luò)輿情處理公司
  • 網(wǎng)站 chat now怎么做各大網(wǎng)站收錄提交入口
  • 用asp做網(wǎng)站優(yōu)勢青島百度網(wǎng)站排名
  • 上海專業(yè)網(wǎng)站建設(shè)渠道seo優(yōu)化推廣業(yè)務(wù)員招聘
  • 去泰國做賭博發(fā)網(wǎng)站seo免費診斷
  • 網(wǎng)頁網(wǎng)站制作維護(hù)十大經(jīng)典事件營銷案例分析
  • 網(wǎng)站的優(yōu)化與網(wǎng)站建設(shè)有關(guān)嗎產(chǎn)品營銷
  • 域名查詢whois臨沂網(wǎng)站建設(shè)優(yōu)化
  • 完善企業(yè)網(wǎng)站建設(shè)最經(jīng)典的營銷案例
  • 海曙網(wǎng)站制作網(wǎng)絡(luò)熱詞大全
  • 網(wǎng)站設(shè)計摘要 優(yōu)幫云外鏈?zhǔn)珍浘W(wǎng)站
  • 個人求職網(wǎng)站如何做官網(wǎng)站內(nèi)推廣內(nèi)容
  • 做外貿(mào)需要哪些網(wǎng)站有哪些成都營銷型網(wǎng)站制作
  • 網(wǎng)站banner效果自己建立網(wǎng)站步驟
  • 政府網(wǎng)站建設(shè) 托管西安seo診斷
  • 微網(wǎng)站怎么做微名片seo網(wǎng)站排名
  • 寶安網(wǎng)站建設(shè)哪家好站長之家工具高清
  • 成華區(qū)建設(shè)局人民防空辦網(wǎng)站百度網(wǎng)站提交
  • Wordpress 建站 軟件文章代寫
  • 設(shè)計專業(yè)所需網(wǎng)站溫州seo網(wǎng)站建設(shè)