为了实时检测线上服务的版本是否正确,需要通过一定的方式暴露当前运行服务的版本信息。
springboot可以很方便的通过spring-boot-actuator来暴露各种endpoint信息,很适合服务的监控。
但有时候为了兼容已有的监控或者部署工具,需要采取一些措施来支持相关信息的暴露。如Jar内部属性文件,如HTTP接口,然后监控部署服务通过检查属性文件或者调用相关服务接口来确认当前服务部署版本是否是目标版本。
内部属性文件方式
- 可以通过git-commit-id-plugin生成git.properties文件等方式。参见此文
- 或者通过maven-resources-plugin给动态给属性文件中的属性赋值。下面的配置实例可以在编译的时候,将git.commit.id.abbrev和git.build.time分别赋值给info节点的git-version属性和app-build-time属性。
- 这样就将项目的部分属性值写入到了文件中。
1 | #application.properties |
接口方式
- 通过接口等方式暴露出去,那么首先需要在服务运行时,能够拿到这些属性值。
- 通过Java Properties来load属性文件。
- 实现Spring的 EnvironmentAware接口,在setEnvironment方法中获取属性值。
- 通过Spring的@Value注解。
- 通过接口等方式暴露出去,那么首先需要在服务运行时,能够拿到这些属性值。
1 | # 第一种 |