一、選擇合適的工具
Spring Boot Banner是一種在應用程序啟動時顯示的自定義圖像,可以為應用程序添加專業和有趣的外觀。如果你想要打造一個讓人眼前一亮的Spring Boot Banner設計,需要選擇一種合適的工具。
常用的工具有字元畫生成器和圖片轉字元工具。
1.字元畫生成器
字元畫是通過將像素的模擬空間映射到製表符和其他字元的空間,生成的一種類似圖片、圖案的文字。
在Java中,我們可以使用ASCII藝術字生成器(http://www.kammerl.de/ascii/AsciiSignature.php)生成自定義的字元畫,或使用Figlet(http://www.figlet.org/)生成高質量的字元畫。
以下是使用ASCII藝術字生成器生成的Spring Boot Banner設計的代碼片段:
System.out.println(""); System.out.println(" __ __ __ "); System.out.println(" .-----.-----.--| |--| |.-----.--.--.----.|__|.-----.---.-.----. "); System.out.println(" | _ | _ | _ <| || -__| | | __|| || _ | _ | __| "); System.out.println(" |___ |___ |_____||__||_____|_____|____||__||_____|___._|____| "); System.out.println(" |_____|_____| ");
2.圖片轉字元工具
圖片轉字元工具是將圖片轉換為字元畫的工具。
在Java中,我們可以使用開源庫:JavaFiglet(https://github.com/heikoseeberger/javafiglet)實現圖片轉字元。
以下是使用JavaFiglet生成的Spring Boot Banner設計的代碼片段:
FigletFont customFont = FigletFont.create(new URL("http://www.jave.de/figlet/fonts/slscript.flf")); String asciiArtBanner = FigletRenderer.render(customFont, "SPRING" + System.lineSeparator() + "BOOT"); System.out.println(asciiArtBanner);
二、自定義顏色和樣式
除了使用字元畫生成器或圖片轉字元工具外,我們還可以自定義Spring Boot Banner的顏色和樣式,從而打造一個讓人眼前一亮的設計。
在Spring Boot中,我們可以通過在src/main/resources下創建banner.txt或banner.*文件,並在其中添加特定字元來自定義Banner樣式。
以下是一個自定義顏色和樣式的代碼片段:
${AnsiColor.RED} ${AnsiStyle.BOLD} __ __ __ ${AnsiStyle.NORMAL} .-----.-----.--| |--| |.-----.--.--.----.|__|.-----.---.-.----. ${AnsiStyle.NORMAL} | _ | _ | _ <| || -__| | | __|| || _ | _ | __| ${AnsiStyle.NORMAL} |___ |___ |_____||__||_____|_____|____||__||_____|___._|____| ${AnsiStyle.NORMAL} |_____|_____| ${AnsiColor.DEFAULT}
三、添加動畫效果
為了吸引眼球,我們可以在Banner中添加一些動畫效果。Spring Boot提供了一個Spring Boot Banner圖標動畫的工具庫:Indicators(https://github.com/ctongfei/progressbar)。
以下是應用Indicators生成的圖標動畫代碼片段:
Spinners spinner = new Spinners(Spinners.SpinnersName.DEFAULT); System.out.println(spinner.next() + " SPRING BOOT APPLICATION " + spinner.next());
四、完整代碼示例
綜合以上的三個方面,我們可以在Spring Boot中創建一個自定義Banner,以打造一個讓人眼前一亮的設計。
以下是一個完整的示例代碼:
import com.github.javafaker.Faker; import me.tongfei.progressbar.ProgressBar; import me.tongfei.progressbar.ProgressBarStyle; import me.tongfei.progressbar.indeterminate.IndeterminateProgressBar; import me.tongfei.progressbar.indeterminate.ProgressIndicators; import me.tongfei.progressbar.indeterminate.style.DotsProgressBarStyle; import me.tongfei.progressbar.indeterminate.style.LettyProgressBarStyle; import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController @EnableScheduling @EnableAsync public class BannerDemoApplication { public static void main(String[] args) { ConfigurableApplicationContext context = new SpringApplicationBuilder(BannerDemoApplication.class) .web(WebApplicationType.SERVLET) .banner(new CustomBanner()) .run(args); } @GetMapping("/") public String home() { return "Hello World!"; } static class CustomBanner implements Banner { @Lazy @Bean public ProgressBar progressBar() { return new ProgressBar("Test progress", 100, new DotsProgressBarStyle().withColorScheme(new ProgressBar.SymbloxColorScheme( ProgressBarStyle.ASCII, ProgressBar.Color.BLUE, ProgressBar.Color.CYAN, ProgressBar.Color.GREEN))) .start(); } @Override public void printBanner(ConfigurableApplicationContext configurableApplicationContext, Class aClass, java.io.PrintStream printStream) { ProgressBar progressBar = configurableApplicationContext.getBean(ProgressBar.class); FakeValuesService fakeValuesService = new FakeValuesService(new Locale("en-GB"), new Faker()); String name = fakeValuesService.name().fullName(); progressBar.maxHint(10); progressBar.bar(); progressBar.stepTo(2); progressBar.step(); progressBar.setExtraMessage("Loading Spring Boot"); progressBar.stepTo(4); progressBar.step(); progressBar.setExtraMessage("Initializing application"); progressBar.stepTo(6); progressBar.step(); progressBar.setExtraMessage("Setting up environment"); progressBar.stepTo(8); progressBar.step(); progressBar.setExtraMessage("Starting server"); progressBar.stepTo(10); progressBar.step(); printStream.println("Welcome " + name + " to Spring Boot!"); } } }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/285528.html