SpringBoot 自定义打印服务信息和 Banner 图!

使用 IDEA 编译器初始化一个 SpringBoot 项目,并尝试将项目在本地启动后,控制台会输出服务的启动信息,包括服务的 Banner 图案以及相关的日志信息。

正如 SpringBoot 项目初始化 所配置的,初始化运行 SpringBoot 项目后,控制台会打印出如下的 Banner 信息。

  • SpringBoot 默认 Banner 图内容,图中可见当前 SpringBoot 版本为 V2.7.6

Banner 图案是 SpringBoot 服务启动时默认打印的日志内容,可以通过 SpringBoot 启动配置设置关闭 Banner 打印。

  • 在启动类 main 方法中设置 application.setBannerMode(Banner.Mode.OFF),可以关闭 Banner 图。

如果认为 SpringBoot 项目启动 Banner 比较官方,并且代表使用的开发框架是 Spring,在实际进行项目开发时,我们可以根据需要切换为自己项目的图案,或者可以自定义为其他图案。

  • 自定义 Banner 图案

自定义项目启动 Banner 图案,只需要按照如下流程进行操作:

  1. 确定项目的 Banner 图案对应的字符串,如 springspring-boot

  2. ASCII Generatordegraeve.com 网站中生成字符串名称对应的 Banner 图案

  1. 在项目的 src/main/resources 目录下新建 banner.txt 文件,将生成的图案结果复制到文件中

  2. 重新启动服务查看 Banner 信息

服务信息

日志打印服务信息

除了对项目 Banner 图自定义外,还可以在项目启动时控制台输出服务的基础信息,如服务名称、访问地址和端口号等信息。

通过打印的服务地址信息,可以方便的在日志中观察服务启动状态,并且在本地环境开发调试时直接访问对应服务地址。

本地 IDEA 中,可以直接点击地址或服务地址到浏览器中进行访问。

自定义输出配置

服务配置信息打印通过读取 SpringBoot 配置信息,并配合解析本地服务 ip 地址实现打印。

  1. 定义服务配置信息
yml 复制代码
server:
  port: 7001
spring:
  application:
    name: tools
  1. 启动时读取配置并打印输出
java 复制代码
@SpringBootApplication
public class ToolsApplication {
    private static Logger logger = LoggerFactory.getLogger(ToolsApplication.class);

    public static void main(String[] args) throws UnknownHostException {
        SpringApplication application = new SpringApplication(ToolsApplication.class);
        ConfigurableApplicationContext applicationContext = application.run(args);
        
        // 获取本地 ip 地址
        String ip = InetAddress.getLocalHost().getHostAddress();
        
        // 获取服务配置文件,name、port、以及全局服务路径
        Environment env = applicationContext.getEnvironment();
        String name = env.getProperty("spring.application.name");
        String port = env.getProperty("server.port");
        String path = Optional.ofNullable(env.getProperty("server.servlet.context-path")).orElse("");
        
        // 打印输出
        logger.info("\n----------------------------------------------------------\n\t" +
                "Application " + name +" is running! Access URLs:\n\t" +
                "Local 访问网址: \t\thttp://localhost:" + port + path + "\n\t" +
                "External 访问网址: \thttp://" + ip + ":" + port + path + "\n\t" +
                "----------------------------------------------------------");
    }
}
  1. 启动服务,打印服务信息
相关推荐
mldong2 小时前
C# 开发者也有自己的轻量工作流引擎了:NuGet 装包,5 分钟跑通一条审批流
后端·c#·.net
爱学堂IT分享4 小时前
鹤翔老师pmp项目管理培训认证考试课 (直播录播题库送学时证明)【共58课时】-51CTO学堂
后端
王的宝库4 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
码事漫谈5 小时前
类型即世界:一个 C++ 程序员的本体论入门
后端
Rain的Java大神之路6 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
IT_陈寒8 小时前
Python的多线程居然是个假把式?搞清GIL让我少熬三天夜
前端·人工智能·后端
明月_清风8 小时前
位图与布隆过滤器:海量数据下的"存在性判断"艺术
前端·后端·算法
明月_清风8 小时前
Hash 表从入门到精通:Go 实战与工程细节
前端·后端·算法
考虑考虑8 小时前
ElasticSearch索引命令
运维·后端·elasticsearch
玉宇夕落10 小时前
背单词项目一:融会贯通:从零构建"单词大师"后台——Next.js + Supabase + Drizzle 全栈开发实战
后端