SpringBoot自定義啟動界面的實(shí)現(xiàn)代碼
前言
實(shí)現(xiàn)自定義啟動動畫是一項(xiàng)有趣的任務(wù),雖然Spring Boot本身不提供內(nèi)置的動畫功能,但可以通過一些技巧來實(shí)現(xiàn)
以下主要以Demo的形式展示,再者下面的Demo都可以聯(lián)合使用
1. banner.text
在資源文件夾(通常是src/main/resources)下放置一個(gè)名為banner.txt的文件,來自定義應(yīng)用啟動時(shí)的Banner,文件的內(nèi)容會在應(yīng)用啟動時(shí)顯示在控制臺中
優(yōu)點(diǎn)如下:簡單且易于實(shí)現(xiàn),且只需在banner.txt文件中定義文本即可,不需要編寫Java代碼
缺點(diǎn)如下:只能顯示靜態(tài)文本或圖案,不支持動態(tài)動畫效果
整體的Demo如下:
.__ __. ______ .______ __ __ _______ | \ | | / __ \ | _ \ | | | | / _____| | \| | | | | | | |_) | | | | | | | __ | . ` | | | | | | _ < | | | | | | |_ | | |\ | | `--' | | |_) | | `--' | | |__| | |__| \__| \______/ |______/ \______/ \______|
之后啟動應(yīng)用程序即可
截圖如下:
已經(jīng)設(shè)置了banner.txt文件來顯示自定義啟動Banner,但希望在某些情況下關(guān)閉這個(gè)Banner
1.1 配置文件關(guān)閉
在Spring Boot的配置文件(例如application.properties或application.yml)中設(shè)置spring.main.banner-mode屬性為off來關(guān)閉Banner
application.properties:
spring.main.banner-mode=off
application.yml:
yaml 復(fù)制代碼 spring: main: banner-mode: off
1.2 啟動類關(guān)閉
只需要設(shè)置為off即可
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class CustomBannerApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(CustomBannerApplication.class); app.setBannerMode(Banner.Mode.OFF); app.run(args); } }
1.3 命令行關(guān)閉
java -jar your-application.jar --spring.main.banner-mode=off
2. 自定義Banner類
創(chuàng)建一個(gè)實(shí)現(xiàn)Banner接口的類,例如CustomBanner:
Demo如下:
import org.springframework.boot.Banner; import org.springframework.core.env.Environment; import java.io.PrintStream; public class CustomBanner implements Banner { @Override public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) { out.println("Custom Startup Animation"); for (int i = 0; i < 10; i++) { try { out.print("."); Thread.sleep(500); // 延時(shí)0.5秒 } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } out.println(); } }
在啟動類中設(shè)置自定義Banner
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class CustomBannerApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(CustomBannerApplication.class); app.setBanner(new CustomBanner()); app.run(args); } }
相對復(fù)雜的動畫特效如下:
import org.springframework.boot.Banner; import org.springframework.core.env.Environment; import java.io.PrintStream; public class CustomBanner implements Banner { @Override public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) { out.println("Starting Application..."); int max = 50; for (int i = 0; i <= max; i++) { out.print("\r["); for (int j = 0; j < max; j++) { if (j < i) { out.print("="); } else { out.print(" "); } } out.print("] " + i * 2 + "%"); try { Thread.sleep(100); // 延時(shí)0.1秒 } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } out.println("\nApplication Started."); } }
3. 自動配置類
也可通過自動配置類
import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.context.annotation.Bean; @AutoConfiguration public class BannerAutoConfiguration { @Bean public BannerApplicationRunner bannerApplicationRunner() { return new BannerApplicationRunner(); } }
實(shí)現(xiàn)一個(gè)BannerApplicationRunner類,包含自定義啟動動畫邏輯:
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; @Component public class BannerApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("Custom Startup Animation"); for (int i = 0; i < 10; i++) { System.out.print("."); Thread.sleep(500); } System.out.println(); } }
啟動類無需修改
只需要添加自動加載以及掃描對應(yīng)包即可:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SuppressWarnings("SpringComponentScan") @SpringBootApplication(scanBasePackages = {"${info.base-package}.server", "${info.base-package}.module"}) public class ServerApplication { public static void main(String[] args) { SpringApplication.run(ServerApplication.class, args); } }
總的來說:
@AutoConfiguration
:確保BannerAutoConfiguration在應(yīng)用啟動時(shí)被自動加載@Bean
:定義一個(gè)bean,這個(gè)bean在應(yīng)用啟動時(shí)被創(chuàng)建并注冊到Spring容器中@SpringBootApplication
:觸發(fā)組件掃描和自動配置
4. 總結(jié)
- banner.txt方法:適合簡單的靜態(tài)文本展示,易于實(shí)現(xiàn),但缺乏動態(tài)效果
- 自定義Banner類方法:適合復(fù)雜的動態(tài)效果,實(shí)現(xiàn)靈活,但需要編寫Java代碼
- 自動配置類方法:結(jié)合了Spring Boot自動配置的優(yōu)點(diǎn),配置類自動加載,適合更復(fù)雜的配置和動態(tài)效果
如果上述的Demo多個(gè)聯(lián)合使用,需要注意時(shí)間順序
可以在如下加入延遲,類似如下:
public class BannerApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) { ThreadUtil.execute(() -> { ThreadUtil.sleep(1, TimeUnit.SECONDS); // 延遲 1 秒,保證輸出到結(jié)尾 log.info("ceshi"); }); } }
到此這篇關(guān)于SpringBoot自定義啟動界面的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)SpringBoot自定義啟動界面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java fastdfs客戶端實(shí)現(xiàn)上傳下載文件
這篇文章主要介紹了Java fastdfs客戶端實(shí)現(xiàn)上傳下載文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Java實(shí)現(xiàn)網(wǎng)絡(luò)文件下載以及下載到指定目錄
在Spring框架中,StreamUtils和FileCopyUtils兩個(gè)工具類提供了方便的文件下載功能,它們都屬于org.springframework.util包,可以通過簡單的方法調(diào)用實(shí)現(xiàn)文件流的復(fù)制和下載,這些工具類支持多種參數(shù)傳遞,涵蓋了文件下載的多種場景2024-09-09Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Springboot視圖解析器ViewResolver使用實(shí)例
這篇文章主要介紹了Springboot視圖解析器ViewResolver使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Spring?Boot?Admin?添加報(bào)警提醒和登錄驗(yàn)證功能的具體實(shí)現(xiàn)
報(bào)警提醒功能是基于郵箱實(shí)現(xiàn)的,當(dāng)然也可以使用其他的提醒功能,如釘釘或飛書機(jī)器人提醒也是可以的,但郵箱報(bào)警功能的實(shí)現(xiàn)成本最低,所以本文我們就來看郵箱的報(bào)警提醒功能的具體實(shí)現(xiàn)2022-01-01構(gòu)建SpringBoot+MyBatis+Freemarker的項(xiàng)目詳解
在本篇內(nèi)容里小編給大家整理的是關(guān)于構(gòu)建SpringBoot+MyBatis+Freemarker的項(xiàng)目的具體步驟以及實(shí)例代碼,需要的朋友們參考下。2019-06-06