Spring boot中的Info Endpoint

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2015/07/25/spring-boot-endpoints/

为了监控应用,Spring Boot提供了EndPoint的支持。

目前提供了十一种,其中大部分都包含默认实现,只有其中的Info需要用户自己提供。

Info的存在很大程度上可以替代AppCheck功能。

最简单添加Info信息的方式就是自己在配置中写入

info.name=app

这样访问/info就可以获得类似这样的结果

{
name: 'app'
}

但是有一些信息是不固定的,比如版本号。

这种可以使用打包工具去完成信息的填充。比如写成

info.version=${version}

在Gradle配置中加上

processResources{
expand(project.properties)
}

当然这样写有一些问题,如果你是用了Flyway等数据库版本管理工具,那么你原声的SQL文件也会被处理,视情况而定,有很高几率信息填充会失败。

所以先过滤一下

processResources {
filesMatching('**/*.properties') { expand(project.properties) }
}

当然,有时候我们还需要一些版本库的信息,比如Git相关信息。

可以Gradle的Git插件来获取数据,然后提供给Info。

importorg.ajoberstar.grgit.Grgit

Grgit repo = Grgit.open(project.file('.'))
ext.git = [
name :repo.branch.current.name,
gitMessage:repo.head().shortMessage,
gitTime :repo.head().getDate().toLocaleString(),
gitId :repo.head().id
];

然后在配置文件中修改

info.build.version=${project.version}
info.build.name=${project.name}
info.git.name=${git.name}
info.git.commit.message=${git.gitMessage}
info.git.commit.time=${git.gitTime}
info.git.commit.id=${git.gitId}

最终效果:

{
git: {
commit: {
message:"ÇåÀígradleÎÞÓÃÅäÖÃ",
time:"2015-7-25 20:45:44",
id:"24d127abb1401437e752498a4878de5d2670f6e4"
},
name: "master"
},
build:{
name: "acgmo",
version:"0.0.2-SNAPSHOT"
}
}

这个乱码问题应该是提交中有中文,但是编译服务器是英文的。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载自夜明的孤行灯

本文链接地址: https://www.huangyunkun.com/2015/07/25/spring-boot-endpoints/

发表评论