Spring Boot中使用Actuator的/info端点输出Git版本信息

对于Spring Boot的Actuator模块相信大家已经不陌生了,尤其对于其中的/health、/metrics等强大端点已经不陌生(如您还不了解Actuator模块,建议先阅读《Spring Boot Actuator监控端点小结》)。但是,其中还有一个比较特殊的端点/info经常被大家所忽视,因为从最初的理解,它主要用来输出application.properties配置文件中通过info前缀来定义的一些属性,由于乍看之下可能想不到太多应用场景,只是被用来暴露一些应用的基本信息,而基本信息本身也可以在与Spring Cloud结合时作为服务治理的注册信息统一管理,所以这个端点的用处并不是很大。

然而实际上,该端点除了描述应用信息之外,也还可以用来描述Git版本信息,并且整合方法非常简单,下面我们就来看看如何使用/info端点暴露当前应用的Git版本信息。

POM配置

首先,我们可以挑选任意一个Spring Boot项目,修改它的pom.xml

  • 引入spring-boot-starter-actuator,提供/info端点
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 添加git-commit-id-plugin插件,该插件用来产生git的版本信息
<plugin>
 <groupId>pl.project13.maven</groupId>
 <artifactId>git-commit-id-plugin</artifactId>
 <version>2.1.15</version>
 <executions>
 <execution>
 <goals>
 <goal>revision</goal>
 </goals>
 </execution>
 </executions>
 <configuration>
 <dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
 </configuration>
</plugin>

产生git版本信息

  • 在完成了上面的配置之后,执行git-commit-id-plugin插件

运行完成后,我们可以在控台中看到类似下面的信息:

[INFO] pl.project13.maven.git.log.MavenLoggerBridge - dotGitDirectory E:\git_project\oschina\SpringBoot-Learning\.git
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.build.user.name didi
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.build.user.email dyc87112@qq.com
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.branch master
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - --always = true
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - --dirty = -dirty
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - --abbrev = 7
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - Tag refs [ [Ref[refs/tags/chapter1=ec8713f61cd49569886708a08adea02c8ef0a112]] ]
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - Created map: [ {} ]
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - HEAD is [ e0540b3524378de9b5d938668a0f75ec016fa5e5 ]
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - Repo is in dirty state [ true ]
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.commit.id.describe e0540b3-dirty
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.commit.id e0540b3524378de9b5d938668a0f75ec016fa5e5
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.commit.id.abbrev e0540b3
[INFO] pl.project13.maven.git.log.MavenLoggerBridge - git.dirty true
...

同时,在target/classes目录下,我们可以发现产生了一个git.properties配置信息:

这个文件就是当前项目的git信息,它的内容如下:

#Generated by Git-Commit-Id-Plugin
#Thu Jun 01 17:57:53 CST 2017
git.build.user.email=dyc87112@qq.com
git.build.host=Lenovo-zhaiyc
git.dirty=true
git.remote.origin.url=https\://git.oschina.net/didispace/SpringBoot-Learning.git
git.closest.tag.name=chapter1
git.commit.id.describe-short=e0540b3-dirty
git.commit.user.email=dyc87112@qq.com
git.commit.time=2017-06-01T17\:57\:10+0800
git.commit.message.full=update
git.build.version=1.0.0
git.commit.message.short=update
git.commit.id.abbrev=e0540b3
git.branch=master
git.build.user.name=didi
git.closest.tag.commit.count=240
git.commit.id.describe=e0540b3-dirty
git.commit.id=e0540b3524378de9b5d938668a0f75ec016fa5e5
git.tags=
git.build.time=2017-06-01T17\:57\:53+0800
git.commit.user.name=didi

启动测试

完成了上述配置之后,启动应用并访问端点,比如:curl localhost:8080/info,我们可以获得如下输出:

{
 "git": {
 "commit": {
 "time": 1496311030000,
 "id": "e0540b3"
 },
 "branch": "master"
 }
}

其中包含了关于branch和commit的基础信息。而这个信息格式是最简模式,我们也可以通过配置下面的参数来获取更全面的git信息:

management.info.git.mode=full

重启应用后再访问/info端点,可以获得类似下面更为详细的版本信息了。

{
 "git": {
 "build": {
 "host": "Lenovo-zhaiyc",
 "version": "1.0.0",
 "time": 1496311073000,
 "user": {
 "name": "didi",
 "email": "dyc87112@qq.com"
 }
 },
 "branch": "master",
 "commit": {
 "message": {
 "short": "update",
 "full": "update"
 },
 "id": "e0540b3524378de9b5d938668a0f75ec016fa5e5",
 "id.describe-short": "e0540b3-dirty",
 "id.abbrev": "e0540b3",
 "id.describe": "e0540b3-dirty",
 "time": 1496311030000,
 "user": {
 "email": "dyc87112@qq.com",
 "name": "didi"
 }
 },
 "closest": {
 "tag": {
 "name": "chapter1",
 "commit": {
 "count": "240"
 }
 }
 },
 "dirty": "true",
 "remote": {
 "origin": {
 "url": "https://git.oschina.net/didispace/SpringBoot-Learning.git"
 }
 },
 "tags": ""
 }
}

代码示例:Chapter6-2-1

Github:https://github.com/dyc87112

码云:http://git.oschina.net/didispace/SpringBoot-Learning

以上所述是小编给大家介绍的Spring Boot中使用Actuator的/info端点输出Git版本信息,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • Spring Boot Actuator监控端点小结

    在Spring Boot的众多Starter POMs中有一个特殊的模块,它不同于其他模块那样大多用于开发业务功能或是连接一些其他外部资源.它完全是一个用于暴露自身信息的模块,所以很明显,它的主要作用是用于监控与管理,它就是:spring-boot-starter-actuator. spring-boot-starter-actuator模块的实现对于实施微服务的中小团队来说,可以有效地减少监控系统在采集应用指标时的开发量.当然,它也并不是万能的,有时候我们也需要对其做一些简单的扩展来帮助我们

  • 详解配置spring-boot-actuator时候遇到的一些小问题

    前言 spring-boot-actuator是一个spring-boot提供的用于监控组件,只需要在代码中加入依赖就可以了 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 遇到的一些小问题 1.可以加入依赖 <dependenc

  • 详解spring-boot actuator(监控)配置和使用

    在生产环境中,需要实时或定期监控服务的可用性.spring-boot 的actuator(监控)功能提供了很多监控所需的接口.简单的配置和使用如下: 1.引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 如果使用http调用的

  • 详解关于springboot-actuator监控的401无权限访问

    今天心血来潮看一下spring监控 访问/beans 等敏感的信息时候报错 Tue Mar 07 21:18:57 GMT+08:00 2017 There was an unexpected error (type=Unauthorized, status=401). Full authentication is required to access this resource. application.properties添加配置参数 management.security.enabled=

  • Spring Boot中使用Actuator的/info端点输出Git版本信息

    对于Spring Boot的Actuator模块相信大家已经不陌生了,尤其对于其中的/health./metrics等强大端点已经不陌生(如您还不了解Actuator模块,建议先阅读<Spring Boot Actuator监控端点小结>).但是,其中还有一个比较特殊的端点/info经常被大家所忽视,因为从最初的理解,它主要用来输出application.properties配置文件中通过info前缀来定义的一些属性,由于乍看之下可能想不到太多应用场景,只是被用来暴露一些应用的基本信息,而基本

  • 详解Spring Boot中使用Flyway来管理数据库版本

    如果没有读过上面内容的读者,有兴趣的可以一阅.在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate实现对用户表的增删改查操作.在实现这个例子的时候,我们事先在MySQL中创建了用户表.创建表的过程我们在实际开发系统的时候会经常使用,但是一直有一个问题存在,由于一个系统的程序版本通过git得到了很好的版本控制,而数据库结构并没有,即使我们通过Git进行了语句的版本化,那么在各个环境的数据库中如何做好版本管理呢?下面我们就通过本文来学习一下在Spring B

  • Spring Boot中使用RSocket的示例代码

    1. 概述 RSocket 应用层协议支持 Reactive Streams 语义, 例如:用RSocket作为HTTP的一种替代方案.在本教程中, 我们将看到 RSocket 用在spring boot中,特别是spring boot 如何帮助抽象出更低级别的RSocket API. 2. 依赖 让我们从添加 spring-boot-starter-rsocket 依赖开始: <dependency> <groupId>org.springframework.boot</g

  • 全面解读Spring Boot 中的Profile配置体系

    Pre 配置体系是基于 Spring Boot 框架开发应用程序的基础,而自动配置也是该框架的核心功能之一,梳理使用 Spring Boot 配置体系的系统方法. 接下来,我们为这个代码工程添加一些支持 RESTful 风格的 HTTP 端点,在这里我们同样创建一个 CustomerController 类,如下所示 @RestController @RequestMapping(value="customers") public class CustomerController {

  • Spring Boot中使用Swagger3.0.0版本构建RESTful APIs的方法

    目录 一.项目描述 二.简介 三.Swagger2.X和Swagger3.0.0 的对比 1)SpringFox 2.x 发布 2)SpringFox 3.0.0 发布 3)swagger3.0 与2.xx配置差异: 四.注解说明 @Api @ApiOperation @ApiImplicitParams @ApiImplicitParam @ApiResponses @ApiModel @ApiModelProperty @ApiIgnore 五.案例准备工作 0.项目目录 1.pom依赖 2

  • spring boot中的properties参数配置详解

    application.properties application.properties是spring boot默认的配置文件,spring boot默认会在以下两个路径搜索并加载这个文件 src\main\resources src\main\resources\config 配置系统参数 在application.properties中可配置一些系统参数,spring boot会自动加载这个参数到相应的功能,如下 #端口,默认为8080 server.port=80 #访问路径,默认为/

  • spring boot中的静态资源加载处理方式

    1.spring boot默认资源处理 Spring Boot 默认为我们提供了静态资源处理,使用 WebMvcAutoConfiguration 中的配置各种属性. spring boot默认加载文件的路径是: /META-INF/resources/ /resources/ /static/ /public/ 这些目录下面, 当然我们也可以从spring boot源码也可以看到Java代码: private static final String[] CLASSPATH_RESOURCE_L

  • 在Spring Boot中如何使用数据缓存

    在实际开发中,对于要反复读写的数据,最好的处理方式是将之在内存中缓存一份,频繁的数据库访问会造成程序效率低下,同时内存的读写速度本身就要强于硬盘.Spring在这一方面给我们提供了诸多的处理手段,而Spring Boot又将这些处理方式进一步简化,接下来我们就来看看如何在Spring Boot中解决数据缓存问题. 创建Project并添加数据库驱动 Spring Boot的创建方式还是和我们前文提到的创建方式一样,不同的是这里选择添加的依赖不同,这里我们添加Web.Cache和JPA依赖,如下图

  • spring boot(三)之Spring Boot中Redis的使用

    spring boot对常用的数据库支持外,对nosql 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化.除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库.可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景.本文介绍Redis在Spring Boot中两个典型的应用场景. 如何使用 1.引入

  • Spring Boot中使用Spring-data-jpa实现数据库增删查改

    在实际开发过程中,对数据库的操作无非就"增删改查".就最为普遍的单表操作而言,除了表和字段不同外,语句都是类似的,开发人员需要写大量类似而枯燥的语句来完成业务逻辑. 为了解决这些大量枯燥的数据操作语句,我们第一个想到的是使用ORM框架,比如:Hibernate.通过整合Hibernate之后,我们以操作Java实体的方式最终将数据改变映射到数据库表中. 为了解决抽象各个Java实体基本的"增删改查"操作,我们通常会以泛型的方式封装一个模板Dao来进行抽象简化,但是这

随机推荐