Spring boot with Git version

本文节选自《Netkiller Java 手札》

5.23. Spring boot with Git version

Spring boot 每次升级打包发给运维操作,常常运维操作不当致使升级失败,开发怎样确认线上的jar/war包与升级包一致呢?

请看下面的解决方案

5.23.1. CommonRestController 公共控制器

所有 RestController将会集成 CommonRestController

			package cn.netkiller.api.rest;

import org.springframework.http.HttpStatus;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;

public class CommonRestController {

	@RequestMapping("ping")
	@ResponseStatus(HttpStatus.OK)
	public String welcome() {
		return "PONG";
	}

	@RequestMapping("commit")
	public String commit() {
		return "$Id$";
	}

	@RequestMapping("auth")
	@ResponseStatus(HttpStatus.OK)
	public String auth(@AuthenticationPrincipal final UserDetails user) {
		return String.format("%s: %s %s", user.getUsername(), user.getPassword(), user.getAuthorities());
	}
}			

5.23.2. VersionRestController 测试控制器

我们创建一个RestController并继承CommonRestController用来测试

			package cn.netkiller.api.rest;

@RestController
@RequestMapping("/public/version")
public class VersionRestController extends CommonRestController {
	private static final Logger logger = LoggerFactory.getLogger(VersionRestController.class);

	public VersionRestController() {
		// TODO Auto-generated constructor stub
	}

	@RequestMapping("welcome")
	@ResponseStatus(HttpStatus.OK)
	public String welcome() {
		return "Welcome to RestTemplate version 1.0.";
	}

}			

5.23.3. 创建 .gitattributes 文件

			# vim .gitattributes
src/main/java/cn/netkiller/api/rest/CommonRestController.java ident			

使用curl命令调用commit接口可以显示当前war/jar最后一次提交的版本号码(你同样可以使用IE浏览器)

			curl https://api.netkiller.cn/public/version/commit.json
$Id: 929bc9e4c90b4d68c25dc693618f23b33fd6ba0f $			

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2017-06-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Hongten

java开发_STMP邮箱客户端_发送邮件

http://zhiwenweb.cn/jszx/czxt/201009/20179.html

772
来自专栏菩提树下的杨过

java调用.net asmx / wcf

一、先用asmx与wcf写二个.net web service: 1.1 asmx web服务:asmx-service.asmx.cs 1 using Sy...

2065
来自专栏JAVA技术站

Eclispe下集成JFinal中jetty包作为开发环境

1.如果是gradle 或是maven项目地址在这,jetty-server包http://maven.oschina.net/index.html#nexu...

782
来自专栏编码前线

Android APK脱壳--腾讯乐固、360加固一键脱壳

启动 VirtualXposed,并在 VirtualXposed中安装 FDex2:

2063
来自专栏我的小碗汤

日志文件转储压缩实现

日志的转储和压缩是非常关键的,它不仅可以减少硬盘空间占用,主要还可以在发生故障时根据日志定位出故障原因。下面来看看golang和java的文件转储实现。

581
来自专栏开发技术

cassandra高级操作之JMX操作

  一开始有点无头绪,后面查看cassandra官方文档看到Monitoring章节,里面说到:Cassandra中的指标使用Dropwizard Metric...

1244
来自专栏dalaoyang

SpringBoot整合mongoDB

1587
来自专栏技术记录

JAVA-FTP批量大文件传输

FTP的具体使用      FTP是一种网络协议,用于进行不同服务器主机之间的文件传输,或者简单地说两台不同IP的机器之间的文件传输。在java中我们什么时候需...

5596
来自专栏酷玩时刻

微信一次性订阅消息

http请求方式: post https://api.weixin.qq.com/cgi-bin/message/template/subscribe?acc...

983
来自专栏Hongten

远程mysql_java.sql.SQLException: null, message from server: "Host 'xxx' is not allowed to connect

其实道理很简单,也就是说,远程的机器B不允许机器A访问他的数据库。也就是说,我们要解决这个问题,就是要让机器B的数据库允许

931

扫码关注云+社区