SpringBoot啓動時的Banner設置

對於使用過SpringBoot的開發者來說,程序啓動的時候輸出的由字符組成的Spring符號並不陌生。這個是SpringBoot爲自己設計的Banner:

 

如果有人不喜歡這個輸出,本文說一下怎麼修改。

SpringBoot由於大力推行自動配置,取消了各種XML配置和properties配置(當然也提供了使用他們的途徑),不再使用web.xml,也優先使用了可執行jar包代替war包。你甚至刪掉WEB-INF目錄都不影響打包操作,因爲jar包用不到這個。

所以SpringBoot默認提供了各種小tricks,但是也強烈建議開發者提供自己的實現來代替默認配置,比如你可以注入一個DataSource,Spring就會使用這個而關閉自己默認的。

 

對於這個banner,卻沒有那麼複雜。最起碼的,如果你實在不想要看到它,關閉即可。

SpringBoot的主函數在由@Configuration、@ComponentScan、@EnableAutoConfiguration註解的一個類中,或者三歸一的註解爲@SpringBootApplication。最簡單的寫法是

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

 而其中的SpringApplication還有一個實例方法run(上面的run是靜態方法,這個類一共有四個run方法,其中2個是靜態的)和另一個實例方法void setShowBanner(boolean showBanner), which is我們正想用的。所以修改代碼如下

public static void main(String[] args) {
//        SpringApplication.run(Application.class, args);
    	SpringApplication application = new SpringApplication(Application.class);
    	application.setShowBanner(false);
    	application.run(args);
    }

 好了,我們不但學習到了如何關閉banner,還學會了一種新的運行程序的方法。moreover,還有一種方法也可以

public static void main(String[] args) {
		// SpringApplication.run(Application.class, args);
		// SpringApplication application = new
		// SpringApplication(Application.class);
		// application.setShowBanner(false);
		// application.run(args);
		new SpringApplicationBuilder().showBanner(true).sources(Application.class).run(args);
	}

 我註釋掉了之前我們用的代碼,最下面一行是新的方法,使用SpringApplicationBuilder。

關於幾種run方法的不同,需要的話可以到官網瞭解一下。一般用不到。

 

不過上面的方法有些強盜,有些因噎廢食。我們只是不想看到默認輸出,但是還想看到unique的輸出搞啊?

我們可以使用一個文件,在類路徑下增加一個banner.txt,比如放到resources文件夾。這個文件會讓springBoot關閉自己的輸出,而把文件內容打出來。你可以試一下。

另外,這個文件還可以引用外部變量。有四個變量可以用到:

${application.version}                這個是MANIFEST.MF文件中的版本號
${application.formatted-version} 這個是上面的的版本號前面加v後上括號
${spring-boot.version}               這個是springboot的版本號
${spring-boot.formatted-version}同上      

 比如我在banner.txt中寫了一行

${spring-boot.version}HHHHH

 輸出就是

1.2.6.RELEASEHHHHH

 

最後,SpringBoot提供了一個接口org.springframework.boot.Banner,他的實例可以被傳給SpringApplication的setBanner(banner)方法。如果你閒得不行非要着重美化這個命令行輸出的話,可以重寫Banner接口的printBanner方法。

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