自定义 SpringBoot 启动Logo

1,339 阅读3分钟

Solomon_肖哥弹架构 跟大家“弹弹” SpringBoot 的整体设计方案与核心功能点,那么今天来看自定义SpringBoot如何自定义启动Logo。 欢迎 点赞,点赞,点赞。

关注本人的公众号Solomon肖哥弹架构获取更多的惊喜

自定义图标存放位置

文字转字符符号,需要使用此类工具完成,将转换之后的内容放入solomonlogo.txt内

Solomonlogo.txt文件内容

${AnsiOrange}
__    __   ______   __
|  \  |  \ /      \ |  \
| $$  | $$|  $$$$$$\| $$
 \$$\/  $$| $$__| $$| $$
  >$$  $$ | $$    $$| $$
 /  $$$$\ | $$$$$$$$| $$
|  $$ \$$\| $$  | $$| $$_____
| $$  | $$| $$  | $$| $$     \
 \$$   \$$ \$$   \$$ \$$$$$$$$

${AnsiNormal}


   SSSSSSSSSSSSSSS      OOOOOOOOO     LLLLLLLLLLL                  OOOOOOOOO     MMMMMMMM               MMMMMMMM     OOOOOOOOO     NNNNNNNN        NNNNNNNN
 SS:::::::::::::::S   OO:::::::::OO   L:::::::::L                OO:::::::::OO   M:::::::M             M:::::::M   OO:::::::::OO   N:::::::N       N::::::N
S:::::SSSSSS::::::S OO:::::::::::::OO L:::::::::L              OO:::::::::::::OO M::::::::M           M::::::::M OO:::::::::::::OO N::::::::N      N::::::N
S:::::S     SSSSSSSO:::::::OOO:::::::OLL:::::::LL             O:::::::OOO:::::::OM:::::::::M         M:::::::::MO:::::::OOO:::::::ON:::::::::N     N::::::N
S:::::S            O::::::O   O::::::O  L:::::L               O::::::O   O::::::OM::::::::::M       M::::::::::MO::::::O   O::::::ON::::::::::N    N::::::N
S:::::S            O:::::O     O:::::O  L:::::L               O:::::O     O:::::OM:::::::::::M     M:::::::::::MO:::::O     O:::::ON:::::::::::N   N::::::N
 S::::SSSS         O:::::O     O:::::O  L:::::L               O:::::O     O:::::OM:::::::M::::M   M::::M:::::::MO:::::O     O:::::ON:::::::N::::N  N::::::N
  SS::::::SSSSS    O:::::O     O:::::O  L:::::L               O:::::O     O:::::OM::::::M M::::M M::::M M::::::MO:::::O     O:::::ON::::::N N::::N N::::::N
    SSS::::::::SS  O:::::O     O:::::O  L:::::L               O:::::O     O:::::OM::::::M  M::::M::::M  M::::::MO:::::O     O:::::ON::::::N  N::::N:::::::N
       SSSSSS::::S O:::::O     O:::::O  L:::::L               O:::::O     O:::::OM::::::M   M:::::::M   M::::::MO:::::O     O:::::ON::::::N   N:::::::::::N
            S:::::SO:::::O     O:::::O  L:::::L               O:::::O     O:::::OM::::::M    M:::::M    M::::::MO:::::O     O:::::ON::::::N    N::::::::::N
            S:::::SO::::::O   O::::::O  L:::::L         LLLLLLO::::::O   O::::::OM::::::M     MMMMM     M::::::MO::::::O   O::::::ON::::::N     N:::::::::N
SSSSSSS     S:::::SO:::::::OOO:::::::OLL:::::::LLLLLLLLL:::::LO:::::::OOO:::::::OM::::::M               M::::::MO:::::::OOO:::::::ON::::::N      N::::::::N
S::::::SSSSSS:::::S OO:::::::::::::OO L::::::::::::::::::::::L OO:::::::::::::OO M::::::M               M::::::M OO:::::::::::::OO N::::::N       N:::::::N
S:::::::::::::::SS    OO:::::::::OO   L::::::::::::::::::::::L   OO:::::::::OO   M::::::M               M::::::M   OO:::::::::OO   N::::::N        N::::::N
 SSSSSSSSSSSSSSS        OOOOOOOOO     LLLLLLLLLLLLLLLLLLLLLLLL     OOOOOOOOO     MMMMMMMM               MMMMMMMM     OOOOOOOOO     NNNNNNNN         NNNNNNN


:: version @Solomon.version@

自定义 Banner

/**
 * 自定义SpringBoot 图标
 */
public class SolomonBanner  implements Banner {
    static final AnsiElement ZIPKIN_ORANGE = new AnsiElement() {
        @Override public String toString() {
            return "38;5;208"; // Ansi 256 color code 208 (orange)
        }
    };

    @Override
    public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) {
        try (InputStream stream = new ClassPathResource("solomonlogo.txt").getInputStream()) {
            String banner = StreamUtils.copyToString(stream, UTF_8);

            // 替换两个扩展属性
            banner = banner.replace("${AnsiOrange}", AnsiOutput.encode(ZIPKIN_ORANGE));
            banner = banner.replace("${AnsiNormal}", AnsiOutput.encode(AnsiStyle.NORMAL));

            out.println(banner);
        } catch (Exception ex) {
            // 不需要处理
        }
    }
}


启动入口

/**
 * 自定义SpringBoot 启动图标演示
 */
@SpringBootApplication
@EnableBootConfiguration
public class SbootApplication {
	public static void main(String[] args) {
		new SpringApplicationBuilder(SbootApplication.class).banner(new SolomonBanner()).run(args);
	}
}

运行结果

关注&点赞 肖哥 后续讲解,SpringBoot 自定义启动Logo的实现方案

你的点赞与关注 是 Solomon_肖哥弹架构持续的动力。

历史热点文章