欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot自定義啟動界面的實(shí)現(xiàn)代碼

 更新時(shí)間:2024年07月18日 09:12:15   作者:碼農(nóng)研究僧  
實(shí)現(xiàn)自定義啟動動畫是一項(xiàng)有趣的任務(wù),雖然Spring Boot本身不提供內(nèi)置的動畫功能,但可以通過一些技巧來實(shí)現(xiàn),本文主要以Demo的形式展示,再者下面的Demo都可以聯(liá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)上傳下載文件

    這篇文章主要介紹了Java fastdfs客戶端實(shí)現(xiàn)上傳下載文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java實(shí)現(xiàn)網(wǎng)絡(luò)文件下載以及下載到指定目錄

    Java實(shí)現(xiàn)網(wǎng)絡(luò)文件下載以及下載到指定目錄

    在Spring框架中,StreamUtils和FileCopyUtils兩個(gè)工具類提供了方便的文件下載功能,它們都屬于org.springframework.util包,可以通過簡單的方法調(diào)用實(shí)現(xiàn)文件流的復(fù)制和下載,這些工具類支持多種參數(shù)傳遞,涵蓋了文件下載的多種場景
    2024-09-09
  • SpringMVC視圖作用詳解

    SpringMVC視圖作用詳解

    這篇文章主要介紹了springMVC中的視圖與視圖解析器,springMVC視圖的種類很多,默認(rèn)有轉(zhuǎn)發(fā)視圖和重定向視圖,本文就每一種視圖給大家詳細(xì)介紹,需要的朋友可以參考下
    2022-11-11
  • Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程

    Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了Ubuntu16.04安裝部署solr7的圖文詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • springcloud部署提示 找不到url的解決

    springcloud部署提示 找不到url的解決

    這篇文章主要介紹了springcloud部署提示 找不到url的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • Springboot視圖解析器ViewResolver使用實(shí)例

    Springboot視圖解析器ViewResolver使用實(shí)例

    這篇文章主要介紹了Springboot視圖解析器ViewResolver使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Spring?Boot?Admin?添加報(bào)警提醒和登錄驗(yàn)證功能的具體實(shí)現(xiàn)

    Spring?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)目詳解

    構(gòu)建SpringBoot+MyBatis+Freemarker的項(xiàng)目詳解

    在本篇內(nèi)容里小編給大家整理的是關(guān)于構(gòu)建SpringBoot+MyBatis+Freemarker的項(xiàng)目的具體步驟以及實(shí)例代碼,需要的朋友們參考下。
    2019-06-06
  • 如何使用mybatis-generator自動生成代碼

    如何使用mybatis-generator自動生成代碼

    這篇文章主要介紹了如何使用mybatis-generator自動生成代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Java 自定義注解及利用反射讀取注解的實(shí)例

    Java 自定義注解及利用反射讀取注解的實(shí)例

    下面小編就為大家?guī)硪黄狫ava 自定義注解及利用反射讀取注解的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論