banner網站(SpringBoot基礎之banner玩法解析)

SpringBoot項目啟動時會在控制臺打印一個默認的啟動圖案,這個圖案就是我們要講的banner。看似簡單的banner,我們能夠對它做些什麼呢?本篇文章就帶大傢深入瞭解一下banner的使用(版本:SpringBoot2.1.4)。制作自己的banner第一步:在src/main/resources下面創建banner.txt。第二步:訪問網站http://patorjk.com/software/taag,在網站“Type Something ”處輸入想要制作的單詞(比如:Hello World),會生成對應的字符。也可以通過其他參數來調整字符的樣式。復制生成的字符,粘貼到banner.txt,再次啟動程序便可以打印出指定的banner瞭。個人比較喜歡的banner是如下圖形:在新版本的SpringBoot中,支持瞭gif、jpg和png的圖片形式的banner打印。當然,並不會把圖片直接打印在控制臺,而是將其像素解析轉換成assii編碼之後打印。對於gif動圖,會把動圖的每個圖片都打印出來,如果動圖比較大,打印時間較長。可以嘗試一下,但建議不要使用gif。在banner.txt中,還可以進行一些設置,比如上圖中的${AnsiColor.BRIGHT_YELLOW}。${AnsiColor.BRIGHT_RED}:設置控制臺中輸出內容的顏色${application.version}:用來獲取MANIFEST.MF文件中的版本號{application.version}版本信息${spring-boot.version}:Spring Boot的版本號{spring-boot.version}版本信息Banner接口在未指定banner.txt或banner圖片時,默認圖形存儲在哪裡瞭呢?下面我們瞭解一下Banner接口。@FunctionalInterfacepublic interface Banner { // 打印banner void printBanner(Environment environment, Class<?> sourceClass, PrintStream out); enum Mode { // 關閉 OFF, // 控制臺 CONSOLE, // 日志文件 LOG }}在banner接口中提供瞭打印banner的方法和一個枚舉類。枚舉類有三個值:OFF、CONSOLE、LOG,用來控制banner的打印,分別對應:關閉打印、控制臺打印和日志打印。banner接口的實現主要有ResourceBanner、ImageBanner、SpringBootBanner和其他內部類的實現。其中上面看到的圖形的打印就來自於SpringBootBanner。看一下源代碼:class SpringBootBanner implements Banner { private static final String[] BANNER = { “”, ” . ____ _ __ _ _”, ” /\\\\ / ___’_ __ _ _(_)_ __ __ _ \\ \\ \\ \\”, “( ( )\\___ | ‘_ | ‘_| | ‘_ \\/ _` | \\ \\ \\ \\”, ” \\\\/ ___)| |_)| | | | | || (_| | ) ) ) )”, ” ‘ |____| .__|_| |_|_| |_\\__, | / / / /”, ” =========|_|==============|___/=/_/_/_/” }; private static final String SPRING_BOOT = ” :: Spring Boot :: “; private static final int STRAP_LINE_SIZE = 42; @Override public void printBanner(Environment environment, Class<?> sourceClass, PrintStream printStream) { for (String line : BANNER) { printStream.println(line); } String version = SpringBootVersion.getVersion(); version = (version != null) ? ” (v” + version + “)” : “”; StringBuilder padding = new StringBuilder(); while (padding.length() < STRAP_LINE_SIZE – (version.length() + SPRING_BOOT.length())) { padding.append(” “); } printStream.println(AnsiOutput.toString(AnsiColor.GREEN, SPRING_BOOT, AnsiColor.DEFAULT, padding.toString(), AnsiStyle.FAINT, version)); printStream.println(); }}在printBanner的方法實現中,首先打印瞭默認的Banner字符串數組,然後將SPRING_BOOT和版本信息進行拼接打印。Banner的參數設置banner的參數設定可以通過兩種形式,一種是代碼的形式,一種是配置文件的形式。使用代碼的形式首先要將默認的main方法進行改造,手動創建SpringApplication對象,然後設置相應的參數。示例代碼:public static void main(String[] args) { SpringApplication app = new SpringApplication(SpringbootBannerApplication.class); app.setBannerMode(Banner.Mode.CONSOLE); Banner banner = new ImageBanner(new ClassPathResource(“banner1.png”)); app.setBanner(banner); app.run(args);}通過配置文件設置就比較簡單,直接在application.properties中進行配置,springboot已經幫我們預制好瞭相應的參數。spring.banner.location=classpath:banner1.pngspring.banner.image.margin=2spring.banner.image.height=76spring.banner.charset=UTF-8spring.banner.image.invert=falsespring.banner.image.location=banner1.pngspring.main.banner-mode=consolespring.main.show-banner=true其中spring.main.show-banner來控制是否打印banner,在新版本中不建議使用,可以使用spring.main.banner-mode代替,將其值設置為OFF即可關閉banner的打印。引入文本banner通過spring.banner.location來指定,引入圖片相關的banner需要通過spring.banner.image.location來指定路徑,否則會出現亂碼情況。如果不想顯示banner,可以在代碼中通過setBannerMode(Banner.Mode.OFF)方法或通過參數配置spring.main.banner-mode=off來關閉banner的打印。上面示例中已經有所展示。

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://kuaisubeian.cc/48349.html

kuaisubeian