将Spring实战第5版中Spring HATEOAS部分代码迁移到Spring HATEOAS 1.0

本文介绍了如何将Spring实战第五版中基于Spring HATEOAS 0.25的代码迁移到1.0版本,包括资源表示的变更、API接口的升级以及代码示例的更新,如Resource到EntityModel的转换、LinkDiscovererAPI和ControllerLinkBuilder的改动等。
摘要由CSDN通过智能技术生成

  最近在阅读Spring实战第五版中文版,书中第6章关于Spring HATEOAS部分代码使用的是Spring HATEOAS 0.25的版本,而最新的Spring HATEOAS 1.0对旧版的API做了升级,导致在使用新版Spring Boot(截至文章发布日最新的Spring Boot版本为2.2.4)加载的Spring HATEOAS 1.0.3无法正常运行书中代码,所以我决定在此对书中的代码进行迁移升级。

  Spring HATEOAS 1.0 版本的变化
  
  封装结构的最大变化是通过引入超媒体类型注册API来实现的,以支持Spring HATEOAS中的其他媒体类型。这导致客户端API和服务器API(分别命名的包)以及包中的媒体类型实现的明确分离 mediatype。
  
  最大的变化就是将原来的资源表示为模型,具体变化如下。
  
  在ResourceSupport/ Resource/ Resources/ PagedResources组类从来没有真正感受到适当命名。毕竟,这些类型实际上并不表示资源,而是表示模型,可以通过超媒体信息和提供的内容来丰富它们。这是新名称映射到旧名称的方式:
  
  ResourceSupport 就是现在 RepresentationModel
  
  Resource 就是现在 EntityModel
  
  Resources 就是现在 CollectionModel
  
  PagedResources 就是现在 PagedModel
  
  因此,ResourceAssembler已被重命名为RepresentationModelAssembler和及其方法toResource(…),并分别toResources(…)被重命名为toModel(…)和toCollectionModel(…)。名称更改也反映在中包含的类中TypeReferences。
  
  RepresentationModel.getLinks()现在公开了一个Links实例(通过List<Link>),该实例公开了其他API,以Links使用各种策略来连接和合并不同的实例。同样,它已经变成了自绑定的泛型类型,以允许向实例添加链接的方法返回实例本身。
  
  该LinkDiscovererAPI已移动到client包。
  
  在LinkBuilder和EntityLinksAPI已经被移到了server包。
  
  ControllerLinkBuilder已移入server.mvc,不推荐使用替换WebMvcLinkBuilder。
  
  RelProvider已重命名为LinkRelationProvider并返回LinkRelation实例,而不是String。
  
  VndError已移至mediatype.vnderror套件。
  
  更多变化请参考Spring HATEOAS文档:https://spring.io/projects/spring-hateoas
  
  代码迁移升级
  
  书中程序清单6.4 为资源添加超链接
  
  复制代码
  
  @GetMapping("/recent")
  
  public CollectionModel<EntityModel<Taco>> recentTacos() {
  
  PageRequest page = PageRequest.of(
  
  0, 12, Sort.by("createdAt").descending());
  
  List<Taco> tacos = tacoRepo.findAll(page).getContent();

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值