Spring Data REST中的关系和路径策略

问题描述 投票:2回答:1

在Spring Data REST 2.3中,选择存储库关系和路径的默认策略是复制和驼峰关联的实体名称。例如,ServiceInstance成为serviceInstances

实体关联和存储库搜索方法关系和路径的身份策略已到位。

我的问题是,是否有一种直截了当的方式来使用替代策略,例如将ServiceInstance变成service-instancesfindByUsername变成find-by-username。我知道Spring HATEOAS有一个RelProvider API,但我没有看到Spring Data REST可以很容易地注入它。这只是对于rels;我想对路径延伸相同的处理方式。

我接受将RelProvider bean定义为直截了当,就像我们可以创建一个CurieProvider bean一样。

我知道我可以通过@RepositoryRestResource@RestResource手动完成这些事情,但我想系统地这样做。

java spring spring-data-rest spring-hateoas
1个回答
2
投票

在Spring Data REST 3.1.6中看起来仍然没有优雅的方式来配置它。

路径生成来自TypeBasedCollectionResourceMapping实现,它在您的域类型上执行简单的StringUtils.uncapitalize()。 Spring Data REST通过实现EvoInflectorTypeBasedCollectionResourceMapping来扩展它,EvoInflectorTypeBasedCollectionResourceMapping调用uncapitalize,然后应用复数转换。

TypeBasedCollectionResourceMappingRepositoryCollectionResourceMapping都在private final void类中被实例化(并且没有注入),RepositoryResourceMappings类在RepositoryResourceMappings类的ProfileController上进一步实例化(并且不注入)。

由于CustomRepositoryResourceMappings是在ProfileController类构造函数中注入的,因此您可以扩展所有这些类并创建一个新的is there is a straightforward-ish way to use an alternative strategy,并尝试将其bean化,以便TypeBasedCollectionResourceMapping将获得您的实现,而不是默认的实现。

所以,回答你关于qazxswpoi的问题,对我来说没有。对我来说,一个简单的方法是注入或配置我的qazxswpoi类的实现。

© www.soinside.com 2019 - 2024. All rights reserved.