SpringBoot - 第四十章 | banner 更改
最近有點累,畢竟堅持著寫部落格,增進自己技術能力是漫長的,今天讓自己稍微放鬆一點,找了一個比較有趣的單元來實作。
這一篇介紹如何自定義springboot的啟動banner。
原始 Banner
有在使用SpringBoot的人都知道,當啟動應用後原生Banner就如下方。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.4.RELEASE)
2019-04-29 11:29:15.230 INFO 1304 --- [ main] c.j.l.s.chapter40.Chapter40Application : Starting Chapter40Application on localhost with PID 1304 (/Users/morose/Documents/workspace-SpringBoot/chapter-40/target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-40) 2019-04-29 11:29:15.232 INFO 1304 --- [ main] c.j.l.s.chapter40.Chapter40Application : No active profile set, falling back to default profiles: default 2019-04-29 11:29:16.302 INFO 1304 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2019-04-29 11:29:16.337 INFO 1304 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2019-04-29 11:29:16.337 INFO 1304 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.17] 2019-04-29 11:29:16.449 INFO 1304 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2019-04-29 11:29:16.449 INFO 1304 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1151 ms 2019-04-29 11:29:16.698 INFO 1304 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-04-29 11:29:16.933 INFO 1304 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2019-04-29 11:29:16.936 INFO 1304 --- [ main] c.j.l.s.chapter40.Chapter40Application : Started Chapter40Application in 2.041 seconds (JVM running for 2.43) s
|
自定義Banner
測試結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| _____ _____ __ __ / | / | / | / | $$$$$ | $$$$$ | $$ | $$ | __ __ ______ _______ ______ $$ | $$ | $$ |__$$ |/ | / | / \ / \ / \ __ $$ | __ $$ | $$ $$ |$$ | $$ | $$$$$$ |$$$$$$$ |/$$$$$$ | / | $$ | / | $$ | $$$$$$$$ |$$ | $$ | / $$ |$$ | $$ |$$ | $$ | $$ \__$$ |__ $$ \__$$ |__ $$ | $$ |$$ \__$$ |/$$$$$$$ |$$ | $$ |$$ \__$$ | $$ $$// |$$ $$// |$$ | $$ |$$ $$/ $$ $$ |$$ | $$ |$$ $$ | $$$$$$/ $$/ $$$$$$/ $$/ $$/ $$/ $$$$$$/ $$$$$$$/ $$/ $$/ $$$$$$$ | / \__$$ | $$ $$/ $$$$$$/ 2019-04-29 11:34:47.117 INFO 1314 --- [ main] c.j.l.s.chapter40.Chapter40Application : Starting Chapter40Application on localhost with PID 1314 (/Users/morose/Documents/workspace-SpringBoot/chapter-40/target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-40) 2019-04-29 11:34:47.120 INFO 1314 --- [ main] c.j.l.s.chapter40.Chapter40Application : No active profile set, falling back to default profiles: default 2019-04-29 11:34:48.149 INFO 1314 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2019-04-29 11:34:48.181 INFO 1314 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2019-04-29 11:34:48.181 INFO 1314 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.17] 2019-04-29 11:34:48.299 INFO 1314 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2019-04-29 11:34:48.299 INFO 1314 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1120 ms 2019-04-29 11:34:48.591 INFO 1314 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-04-29 11:34:48.829 INFO 1314 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2019-04-29 11:34:48.832 INFO 1314 --- [ main] c.j.l.s.chapter40.Chapter40Application : Started Chapter40Application in 2.026 seconds (JVM running for 2.347)
|
屬性設置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| ${AnsiColor.BRIGHT_GREEN}
_____ _____ __ __ / | / | / | / | $$$$$ | $$$$$ | $$ | $$ | __ __ ______ _______ ______ $$ | $$ | $$ |__$$ |/ | / | / \ / \ / \ __ $$ | __ $$ | $$ $$ |$$ | $$ | $$$$$$ |$$$$$$$ |/$$$$$$ | / | $$ | / | $$ | $$$$$$$$ |$$ | $$ | / $$ |$$ | $$ |$$ | $$ | $$ \__$$ |__ $$ \__$$ |__ $$ | $$ |$$ \__$$ |/$$$$$$$ |$$ | $$ |$$ \__$$ | $$ $$// |$$ $$// |$$ | $$ |$$ $$/ $$ $$ |$$ | $$ |$$ $$ | $$$$$$/ $$/ $$$$$$/ $$/ $$/ $$/ $$$$$$/ $$$$$$$/ $$/ $$/ $$$$$$$ | / \__$$ | $$ $$/ $$$$$$/
${AnsiColor.BRIGHT_RED} Application Version: ${application.version}${application.formatted-version} Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
|
- ${AnsiColor.BRIGHT_RED}:設置控制台中輸出內容的顏色
- ${application.version}:用來獲取MANIFEST.MF文件中的版本號
- ${application.formatted-version}:格式化後的${application.version}版本訊息
- ${spring-boot.version}:Spring Boot的版本號
- ${spring-boot.formatted-version}:格式化後的${spring-boot.version}版本訊息
測試結果
因為我使用Eclipse所以Banner顏色好像不起作用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
_____ _____ __ __ / | / | / | / | $$$$$ | $$$$$ | $$ | $$ | __ __ ______ _______ ______ $$ | $$ | $$ |__$$ |/ | / | / \ / \ / \ __ $$ | __ $$ | $$ $$ |$$ | $$ | $$$$$$ |$$$$$$$ |/$$$$$$ | / | $$ | / | $$ | $$$$$$$$ |$$ | $$ | / $$ |$$ | $$ |$$ | $$ | $$ \__$$ |__ $$ \__$$ |__ $$ | $$ |$$ \__$$ |/$$$$$$$ |$$ | $$ |$$ \__$$ | $$ $$// |$$ $$// |$$ | $$ |$$ $$/ $$ $$ |$$ | $$ |$$ $$ | $$$$$$/ $$/ $$$$$$/ $$/ $$/ $$/ $$$$$$/ $$$$$$$/ $$/ $$/ $$$$$$$ | / \__$$ | $$ $$/ $$$$$$/
Application Version: Spring Boot Version: 2.1.4.RELEASE (v2.1.4.RELEASE) 2019-04-29 11:42:58.073 INFO 1331 --- [ main] c.j.l.s.chapter40.Chapter40Application : Starting Chapter40Application on localhost with PID 1331 (/Users/morose/Documents/workspace-SpringBoot/chapter-40/target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-40) 2019-04-29 11:42:58.076 INFO 1331 --- [ main] c.j.l.s.chapter40.Chapter40Application : No active profile set, falling back to default profiles: default 2019-04-29 11:42:59.127 INFO 1331 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2019-04-29 11:42:59.158 INFO 1331 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2019-04-29 11:42:59.158 INFO 1331 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.17] 2019-04-29 11:42:59.271 INFO 1331 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2019-04-29 11:42:59.272 INFO 1331 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1127 ms 2019-04-29 11:42:59.509 INFO 1331 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-04-29 11:42:59.732 INFO 1331 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2019-04-29 11:42:59.735 INFO 1331 --- [ main] c.j.l.s.chapter40.Chapter40Application : Started Chapter40Application in 1.97 seconds (JVM running for 2.307)
|
動態Banner
SpringBoot可以代印動態Banner。找一張自己喜歡的gif圖片如下
在resources文件夾下新建banner.gif。
控制台打印的時候會將gif的每一幀轉成ascii碼,打印在控制台。而且,打印完畢後,還會將banner.txt中的內容打印出來。
測試結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
.. .::* ...
[36A
..... .... ........ . ... ........ . .. ...... .... .... ... . . ..**::**.. .*::::::::::*. .*::::::::::::*. .*::::::::::::*. .*::::::::::::*. .*::::::::::*. ..**::***. .. ..... .. ..... ... ...... ...... . ... . ..... . .... . .
[36A
............................ ............. .................. ......... ................ . ................... ... . ... ............ ............. . ... ............... . ......... ........... .......... ....... .... ............ ........ ........ ........ .... . ......... ........ ........ ......... ..********.. ......*.. ........ .**::::::::::::**. ........ ........... .**::::::::::::::::**. ....... ...... .*::::::::::::::::::::*. ....... ... .. .*::::::::::::::::::::::*. ....... ...... .::::::::::::::::::::::::. ....... .......... .::::::::::::::::::::::::. ... .... ......... .*:::::::::::::::::::::::. .... ......... .*::::::::::::::::::::::*. ... ......... .*::::::::::::::::::::*. .... ........ .**::::::::::::::::**. ......... ... .... .**::::::::::::**. ......... . ........ .********.. ......... ....... . ......*.. ......... . ..... ....... ......... ........ . ............ ............ .. ........... . ............. ......... ................ .... .......... ............. .... . ......... . ..... . .... ...... ......... . .. .... .............. .... .. ............. ........... ..............
中間省略⋯⋯
[36A
*::::::::::::::* :::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: :. *::::::::::::::::::::::::::::::::::::: :*: ::::::::::::::::::::::::::::::::::::::::::: *: .:::::::::::::::::::::::::::::::::::::::::: : ::::::::::::::::::::::::::::::::::::::::::. .: ::::::::::::::::::::::::::::::::::::::::: : :::::::::::::::::::::::::::::::::::::: *: :::::::::::::::::::::::::::::::::* : :::::::::::::::::::* : ::::::::::::::: * *: .:::::::::::: * .: :::::::::::. : : :::::::::: : .: :::::::::: :: .: .:::::::: ::: :* :::::::: ::: : :::::::: :::: :: ::::::: ::::: *: ::::::: *::::::: :: :::::::. ::::::::::: ::: :::::::::::::::::::::::* :::: .::: :::::::::* .:::::* : :::::::::::::::::::::::::::::::::::: . .::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::: :::::::::::::::::::::::::: *::::::::::::::*
_____ _____ __ __ / | / | / | / | $$$$$ | $$$$$ | $$ | $$ | __ __ ______ _______ ______ $$ | $$ | $$ |__$$ |/ | / | / \ / \ / \ __ $$ | __ $$ | $$ $$ |$$ | $$ | $$$$$$ |$$$$$$$ |/$$$$$$ | / | $$ | / | $$ | $$$$$$$$ |$$ | $$ | / $$ |$$ | $$ |$$ | $$ | $$ \__$$ |__ $$ \__$$ |__ $$ | $$ |$$ \__$$ |/$$$$$$$ |$$ | $$ |$$ \__$$ | $$ $$// |$$ $$// |$$ | $$ |$$ $$/ $$ $$ |$$ | $$ |$$ $$ | $$$$$$/ $$/ $$$$$$/ $$/ $$/ $$/ $$$$$$/ $$$$$$$/ $$/ $$/ $$$$$$$ | / \__$$ | $$ $$/ $$$$$$/
Application Version: Spring Boot Version: 2.1.4.RELEASE (v2.1.4.RELEASE) 2019-04-29 11:54:59.990 INFO 1382 --- [ main] c.j.l.s.chapter40.Chapter40Application : Starting Chapter40Application on localhost with PID 1382 (/Users/morose/Documents/workspace-SpringBoot/chapter-40/target/classes started by morose in /Users/morose/Documents/workspace-SpringBoot/chapter-40) 2019-04-29 11:54:59.994 INFO 1382 --- [ main] c.j.l.s.chapter40.Chapter40Application : No active profile set, falling back to default profiles: default 2019-04-29 11:55:01.218 INFO 1382 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2019-04-29 11:55:01.257 INFO 1382 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2019-04-29 11:55:01.257 INFO 1382 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.17] 2019-04-29 11:55:01.423 INFO 1382 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2019-04-29 11:55:01.423 INFO 1382 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1373 ms 2019-04-29 11:55:01.706 INFO 1382 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2019-04-29 11:55:01.983 INFO 1382 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2019-04-29 11:55:01.987 INFO 1382 --- [ main] c.j.l.s.chapter40.Chapter40Application : Started Chapter40Application in 16.473 seconds (JVM running for 16.828)
|
註:以上參考了
SpringBoot启动banner更改
程序猿DD 的 新年彩蛋:Spring Boot自定义Banner 文章。