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 条评论
登录 后参与评论

相关文章

来自专栏程序猿DD

Spring Cloud Feign的文件上传实现

在Spring Cloud封装的Feign中并不直接支持传文件,但可以通过引入Feign的扩展包来实现,本文就来具体说说如何实现。 ? 服务提供方(接收文件) ...

29511
来自专栏JAVA同学会

Spring Cloud 服务端注册与客户端调用

  上一篇中,我们已经把Spring Cloud的服务注册中心Eureka搭建起来了,这一章,我们讲解如何将服务注册到Eureka,以及客户端如何调用服务。

561
来自专栏程序猿DD

Spring Cloud Zuul重试机制探秘

作者:李刚 原文:http://www.spring4all.com/article/208 简介 本文章对应spring cloud的版本为(Dalston....

1.1K9
来自专栏JAVA同学会

Feign 与 Hystrix

Feign是一个声明式的web服务客户端,它使得web服务调用非常的简单,当我们使用Feign时,Spring Cloud 整合了Ribbon和Eureka,从...

542
来自专栏开发技术

druid抛出的异常------javax.management.InstanceAlreadyExistsException引发的一系列探索

  最近项目中有个定时任务的需求,定时检查mysql数据与etcd数据的一致性,具体实现细节就不说了,今天要说的就是实现过程中遇到了druid抛出的异常,以及解...

713
来自专栏Ken的杂谈

Spring Cloud 入门教程8、服务网关Zuul+Hystrix:断路处理与监控

参考上一篇:https://ken.io/note/spring-cloud-zuul-quickstart 基于源码:https://github.com/k...

411
来自专栏Android源码框架分析

Android权限检查API checkSelfPermission失效问题为什么targetSdkVersion < 23 Context 的 checkSelfPermission失效target

2123
来自专栏程序猿DD

【译】Spring 官方教程:Spring Security 架构

原文:Spring Security Architecture 译者:徐靖峰 校对:马超君 专题指南 本文是 Spring Security 的入门指南,并对 ...

3267
来自专栏kl的专栏

Feign-声明式java Http客户端

Feign 是Netfilx开源的一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持...

4305
来自专栏java闲聊

SSM,第一天基于Maven的SSM整合,依赖关系搭建

1625

扫描关注云+社区