在Spring Data REST 2.3中,选择存储库关系和路径的默认策略是复制和驼峰关联的实体名称。例如,ServiceInstance
成为serviceInstances
。
实体关联和存储库搜索方法关系和路径的身份策略已到位。
我的问题是,是否有一种直截了当的方式来使用替代策略,例如将ServiceInstance
变成service-instances
和findByUsername
变成find-by-username
。我知道Spring HATEOAS有一个RelProvider
API,但我没有看到Spring Data REST可以很容易地注入它。这只是对于rels;我想对路径延伸相同的处理方式。
我接受将RelProvider
bean定义为直截了当,就像我们可以创建一个CurieProvider
bean一样。
我知道我可以通过@RepositoryRestResource
和@RestResource
手动完成这些事情,但我想系统地这样做。
在Spring Data REST 3.1.6中看起来仍然没有优雅的方式来配置它。
路径生成来自TypeBasedCollectionResourceMapping
实现,它在您的域类型上执行简单的StringUtils.uncapitalize()
。 Spring Data REST通过实现EvoInflectorTypeBasedCollectionResourceMapping
来扩展它,EvoInflectorTypeBasedCollectionResourceMapping
调用uncapitalize,然后应用复数转换。
TypeBasedCollectionResourceMapping
和RepositoryCollectionResourceMapping
都在private final void
类中被实例化(并且没有注入),RepositoryResourceMappings
类在RepositoryResourceMappings
类的ProfileController
上进一步实例化(并且不注入)。
由于CustomRepositoryResourceMappings
是在ProfileController
类构造函数中注入的,因此您可以扩展所有这些类并创建一个新的is there is a straightforward-ish way to use an alternative strategy
,并尝试将其bean化,以便TypeBasedCollectionResourceMapping
将获得您的实现,而不是默认的实现。
所以,回答你关于qazxswpoi的问题,对我来说没有。对我来说,一个简单的方法是注入或配置我的qazxswpoi类的实现。