栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从Spring Data中正确使用PagedResourcesAssembler?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从Spring Data中正确使用PagedResourcesAssembler?

你似乎已经找到了正确的使用方法,但是我想在这里详细介绍一些细节,以便其他人也可以找到。我PagedResourceAssembler在这个答案中也有类似的细节。

表示模型
Spring HATEOAS附带了多种表示模型的基类,这些基类使创建带有链接的表示变得容易。开箱即用提供三种类型的类:

  • Resource
    -项目资源。有效地包装一些捕获单个项目并通过链接丰富它的DTO或实体。
  • Resources
    -集合资源,可以是某物的集合,但通常是Resource实例的集合。
  • PagedResources
    -的扩展名
    Resources
    可捕获其他分页信息,例如总页数等。

所有这些类均源自

ResourceSupport
,这是link实例的基本容器。

Resource assemblers

A

ResourceAssembler
现在是缓解组件,用于将你的域对象或DTO转换为此类资源实例。这里的重要部分是,它将一个源对象变成一个目标对象。

因此,

PagedResourcesAssembler
会采用
Spring Data Page
实例并将其
PagedResources
评估为,
Page
并创建必要
Pagemetadata
prev
next
链接来浏览页面,从而将其转换为实例。默认情况下-这可能是这里有趣的部分-它将使用普通的
SimplePagedResourceAssembler
(的内部类PRA)将页面的各个元素转换为嵌套Resource实例。

为了允许对此进行自定义,PRA提供了其他

toResource(…)
方法,这些方法需要委托
ResourceAssembler
来处理各个项目。因此,你最终会得到如下结果:

 class UserResource extends ResourceSupport { … } class UserResourceAssembler extends ResourceAssemblerSupport<User, UserResource> { … }

客户端代码现在看起来像这样:

 PagedResourcesAssembler<User> parAssembler = … // obtain via DI UserResourceAssembler userResourceAssembler = … // obtain via DI Page<User> users = userRepository.findAll(new PageRequest(0, 10)); // Tell PAR to use the user assembler for individual items. PagedResources<UserResource> pagedUserResource = parAssembler.toResource(   users, userResourceAssembler);

Outlook

从即将推出的Spring Data Commons 1.7 RC1(和Spring HATEOAS 0.9过渡而来)开始,prev和next链接将作为RFC6540兼容URI模板生成,以暴露在

HandlerMethodArgumentResolversfor Pageable
和中配置的分页请求参数Sort。

你可以通过注释config类来简化上面显示的配置,该类

@EnableSpringDataWebSupport
将使你摆脱所有显式的bean声明。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407839.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号