SpringBoot自定義啟動界面的實現(xiàn)代碼
前言
實現(xiàn)自定義啟動動畫是一項有趣的任務(wù),雖然Spring Boot本身不提供內(nèi)置的動畫功能,但可以通過一些技巧來實現(xiàn)
以下主要以Demo的形式展示,再者下面的Demo都可以聯(lián)合使用
1. banner.text
在資源文件夾(通常是src/main/resources)下放置一個名為banner.txt的文件,來自定義應(yīng)用啟動時的Banner,文件的內(nèi)容會在應(yīng)用啟動時顯示在控制臺中
優(yōu)點如下:簡單且易于實現(xiàn),且只需在banner.txt文件中定義文本即可,不需要編寫Java代碼
缺點如下:只能顯示靜態(tài)文本或圖案,不支持動態(tài)動畫效果
整體的Demo如下:
.__ __. ______ .______ __ __ _______ | \ | | / __ \ | _ \ | | | | / _____| | \| | | | | | | |_) | | | | | | | __ | . ` | | | | | | _ < | | | | | | |_ | | |\ | | `--' | | |_) | | `--' | | |__| | |__| \__| \______/ |______/ \______/ \______|
之后啟動應(yīng)用程序即可
截圖如下:

已經(jīng)設(shè)置了banner.txt文件來顯示自定義啟動Banner,但希望在某些情況下關(guān)閉這個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)建一個實現(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); // 延時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); // 延時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();
}
}
實現(xiàn)一個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)用啟動時被自動加載@Bean:定義一個bean,這個bean在應(yīng)用啟動時被創(chuàng)建并注冊到Spring容器中@SpringBootApplication:觸發(fā)組件掃描和自動配置
4. 總結(jié)
- banner.txt方法:適合簡單的靜態(tài)文本展示,易于實現(xiàn),但缺乏動態(tài)效果
- 自定義Banner類方法:適合復(fù)雜的動態(tài)效果,實現(xiàn)靈活,但需要編寫Java代碼
- 自動配置類方法:結(jié)合了Spring Boot自動配置的優(yōu)點,配置類自動加載,適合更復(fù)雜的配置和動態(tài)效果
如果上述的Demo多個聯(lián)合使用,需要注意時間順序
可以在如下加入延遲,類似如下:
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自定義啟動界面的實現(xiàn)代碼的文章就介紹到這了,更多相關(guān)SpringBoot自定義啟動界面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實現(xiàn)網(wǎng)絡(luò)文件下載以及下載到指定目錄
在Spring框架中,StreamUtils和FileCopyUtils兩個工具類提供了方便的文件下載功能,它們都屬于org.springframework.util包,可以通過簡單的方法調(diào)用實現(xiàn)文件流的復(fù)制和下載,這些工具類支持多種參數(shù)傳遞,涵蓋了文件下載的多種場景2024-09-09
Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Springboot視圖解析器ViewResolver使用實例
這篇文章主要介紹了Springboot視圖解析器ViewResolver使用實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-04-04
Spring?Boot?Admin?添加報警提醒和登錄驗證功能的具體實現(xiàn)
報警提醒功能是基于郵箱實現(xiàn)的,當(dāng)然也可以使用其他的提醒功能,如釘釘或飛書機(jī)器人提醒也是可以的,但郵箱報警功能的實現(xiàn)成本最低,所以本文我們就來看郵箱的報警提醒功能的具體實現(xiàn)2022-01-01
構(gòu)建SpringBoot+MyBatis+Freemarker的項目詳解
在本篇內(nèi)容里小編給大家整理的是關(guān)于構(gòu)建SpringBoot+MyBatis+Freemarker的項目的具體步驟以及實例代碼,需要的朋友們參考下。2019-06-06

