为用于JAVA的睡觉模型进行版本控制的好工具
我正在寻找好的工具来支持改变睡觉服务中使用的模型的版本。我的梦想工具可以做到以下几点:
- My POJO+1.0版配置/转换器=>1.0版My Model提供的服务
- My POJO+版本1.1配置/转换器=>我的型号1.1提供的服务
在我的特殊情况下,我不需要做反向转换,因为我的睡觉服务只提供数据查找,不会存储东西,但我不介意使用同时做这两个功能的工具:-)
我正在考虑的一个解决方案是在我的POJO(版本+名称)中添加自定义注释,并制作一个代码生成器,它将基于我的POJO根据版本号生成JSON/XML。虽然在这里,我感觉我是在重新发明轮子。
编辑: 以下是可以从版本1更改到版本1.1的示例:
版本1: 人 名字 姓氏 版本1.1 人 名字 姓氏 生日如果使用1.0版访问API,则不会获得出生日期属性-该属性仅在1.1版中可用。我需要使这些服务可用的工具支持,我可以在其中进行配置,假设我的POJO(当前类似于1.1版本),我希望提供不显示这些值的1.0版本。
对模型的其他合法更改可能是删除属性或重命名属性(甚至重命名实体)。
编辑2: Digital Joel在一条评论中提到,有关API版本的讨论,您应该阅读https://stackoverflow.com/posts/9789756/。 摆脱版本控制的简单方法当然是不进行向后破坏的API更改,但是业务更改因此这并不总是可能的。我感兴趣的是如何使这些更改更易于处理,因此我的问题是。编辑3: 我一直在寻找可以帮助这一过程的工具,但仍然没有能将这一点与睡觉很好地联系起来的工具。以下是我到目前为止找到的链接:
- http://wiki.pmease.com/display/xmt/What%27s+XMT(看起来像一个帮助序列化POJO到XML进行版本控制的库)
解决方案
如一个答案中所述,可能没有可用于执行API自动版本控制的工具。
我们可以通过两步法解决此挑战:
1)接口版本信息 关于最佳实践有很多争论。 最受欢迎的两个是:
(i) URI redesign - putting version info in URI like
http://something.com/v1.0/resource1/ or
http://something.com/resource1?ver=1.0
(ii) Using HTTP Header - putting version info in Accept/Content-Type
header keeping URI intact like
#
GET /something/ HTTP/1.1
Accept: application/resource1-v1.0+json
2)使用json/xml库的同一POJO的多个版本
一旦有了版本信息,我们就必须相应地生成资源。 有许多JSON和XML库,我们可以使用它们维护同一POJO的多个版本,并根据版本只序列化所需的属性。 google gson java库在这方面做得很好。检查 https://sites.google.com/site/gson/gson-user-guide#TOC-Versioning-Supportpublic class Person{
@Since(1.0)
private String firstname;
@Since(1.0)
private String lastname;
@Since(1.1)
private String birthdate;
}
相关文章