springboot2.x自定義啓動banner

大家在做springboot項目時,啓動項目,控制檯都會打印spring的默認的banner:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.3.RELEASE)

在翻看springboot啓動源碼時發現,看到了打印banner的代碼,支持自定義banner,而且也比較方便。

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

從獲取banner的代碼可以看出,先獲取圖片banner,再獲取文本banner,如果都沒獲取到,使用默認banner。

private Banner getImageBanner(Environment environment) {
		String location = environment.getProperty(BANNER_IMAGE_LOCATION_PROPERTY);
		if (StringUtils.hasLength(location)) {
			Resource resource = this.resourceLoader.getResource(location);
			return resource.exists() ? new ImageBanner(resource) : null;
		}
		for (String ext : IMAGE_EXTENSION) {
			Resource resource = this.resourceLoader.getResource("banner." + ext);
			if (resource.exists()) {
				return new ImageBanner(resource);
			}
		}
		return null;
	}

獲取圖片banner的代碼中,會從

spring.banner.image.location

屬性中獲取圖片所在位置,如果無該屬性值,會去src/main/resources路徑下找banner.["gif", "jpg", "png"](支持這3種圖片格式)文件。

 

private Banner getTextBanner(Environment environment) {
		String location = environment.getProperty(BANNER_LOCATION_PROPERTY,
				DEFAULT_BANNER_LOCATION);
		Resource resource = this.resourceLoader.getResource(location);
		if (resource.exists()) {
			return new ResourceBanner(resource);
		}
		return null;
	}

如上獲取文本banner代碼中,從

spring.banner.location

屬性中獲取文本banner的位置,沒有配置該屬性的話,默認爲src/main/resources路徑下的banner.txt。

 

自定義文本banner

按照上述分析,我們在src/main/resources下新建banner.txt文件,banner的內容我們可以使用工具生成,

推薦網站: http://patorjk.com/software/taag/

生成自定義banner:

將生成的banner copy到banner.txt文件中,補充內容如下:

        _       _     _             
       (_)     (_)   | |            
  _   _ _ _   _ _ ___| |_ __ _ _ __ 
 | | | | | | | | / __| __/ _` | '__|
 | |_| | | |_| | \__ \ || (_| | |   
  \__, |_|\__, |_|___/\__\__,_|_|   
   __/ |   __/ |                    
  |___/   |___/                     

::::::::::::::::::::::::::::::::::::::
author: yiyistar
email: [email protected]
::::::::::::::::::::::::::::::::::::::

在application.properties添加如下內容(可選):

spring.banner.location=banner.txt

啓動springboot,控制檯打印如下:

 

自定義圖片banner

在application.properties添加如下內容:

#image位置(可選)
spring.banner.image.location=banner.jpg
#控制banner高度
spring.banner.image.height=15
#控制banner寬度
spring.banner.image.width=45

將製作好的 banner.jpg 加入到src/main/resources文件夾下。啓動springboot,控制檯打印如下:

如果將banner.jpg 和 banner.txt都放在src/main/resources下,啓動時都會打印。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章