当前位置: 首页 > news >正文

【工具类】Springboot 项目日志打印项目版本和构建时间

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌

技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。

感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。

Springboot 项目日志打印项目版本和构建时间

  • 一、功能介绍
  • 二、实现步骤
    • 2.1 添加服务启动的前置执行代码
    • 2.2 application.yml配置变量

一、功能介绍

在springboot项目启动时,将会打印项目的基本信息:服务名称,pom中的项目版本,以及jar包构建的时间,方便检测服务是否更新到正确的版本,也可以提供接口访问。

二、实现步骤

2.1 添加服务启动的前置执行代码

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

import javax.annotation.PostConstruct;

/**
 * 初始化bean之前执行即服务启动的前置代码
 * 日志打印项目版本和构建时间
 */
@Configuration
@Slf4j
public class BeanPostConfig implements BeanPostProcessor {
    @Value("${project.version}")
    private String serviceVersion;
    @Value("${project.builddate}")
    private String buildDate;
    @Value("${spring.application.name}")
    private String serviceName;

    @Autowired
    private Environment environment;

    @PostConstruct
    public void  projectInfo(){
        StringBuffer projectInfo = new StringBuffer();
        projectInfo.append("\n=================project=================\n");
        projectInfo.append(String.format("\nservice name:%s\n",serviceName));
        projectInfo.append(String.format("\nservice version:%s\n",serviceVersion));
        projectInfo.append(String.format("\nservice build date:%s\n",buildDate));
        projectInfo.append("\n=================project=================\n");
        log.info(projectInfo.toString());

    }

}

2.2 application.yml配置变量

project:
  version: @project.version@
  builddate: @maven.build.timestamp@

好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈

本文完结!

祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!在这里插入图片描述

相关文章:

  • C++学习(十)(标准,C++11 和 C++14,C++17,C++20)
  • Linux 进程管理工具 Supervisor
  • 【线程与进程的区别和联系】
  • 深度学习驱动的跨行业智能化革命:技术突破与实践创新
  • im即时聊天客服系统SaaS还是私有化部署:成本、安全与定制化的权衡策略
  • linux-git
  • 设计模式--单例模式(Singleton)【C++】
  • Celia智能助手系统架构设计与技术实现全解析
  • MobileMamba: Lightweight Multi-Receptive Visual Mamba Network——论文笔记
  • 一套企业级智能制造云MES系统源码, vue-element-plus-admin+springboot
  • deepin安装rust
  • Unity自定义区域UI滑动事件
  • Facebook 的历史与发展:从校园网站到全球社交平台
  • 考网络安全工程师证要什么条件才能考?
  • 无线可视挖耳勺适合老年人吗?无线可视挖耳勺操作简单又安全
  • 正十七边形尺规作图证明——从高斯的发现到几何实现
  • 如何在语言模型的参数中封装知识?——以T5模型为例
  • 智能合约中权限管理不当
  • TypeError: null is not an object
  • 基于Python实现长尾数驱动的故障轴承诊断方法的示例
  • 青岛企业如何建网站/最新热点新闻
  • 网站建设企业服务商/国内做seo最好公司
  • 怎么看网站关键词密度/指数基金什么意思
  • 建站技术博客/平台推广方案
  • 重新设置wordpress/谷歌网站优化推广
  • 做不规则几何图形的网站/企业seo职位