添加指向Spring Data REST Repository资源的链接

Den*_*zke 4 spring-mvc spring-data-rest spring-hateoas

我想在Spring Data REST Repository中创建一个资源链接.我知道我们可以使用ControllerLinkBuilder.linkTo方法创建到MVC控制器的链接.据我所知,Spring Data REST从我们的Repository接口创建了MVC控制器.但是,如果我使用

Instance createdInstance = instanceRepository.save(instance);
Link link = linkTo(InstanceRepository.class).slash(createdInstance.getId()).withSelfRel();
Run Code Online (Sandbox Code Playgroud)

创建链接,我只是得到http://localhost:8080/2(没有存储库路径).如果我@RepositoryRestResource在存储库中明确指定路径,则不会发生任何变化.

当然我可以明确地创建链接,但我不想重复自己.

public interface InstanceRepository extends CrudRepository<Instance, Long> {
}
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题而不必违反DRY原则的任何建议?

Den*_*zke 11

通过Spring Data REST源代码搜索,我找到了RepositoryEntityLinks类,它在框架中使用.它有一个非常讨厌的构造函数,但(至少在我的项目中)我能够@Autowire上课.

简而言之,以下代码可以解决问题.尽管如此,我很高兴听到另一个人对此有更多的教育意见!

Link link = entityLinks.linkToSingleResource(InstanceRepository.class, 1L);
Run Code Online (Sandbox Code Playgroud)

  • 没有什么可补充的,除了即将发布的版本2.4.0将在参考文档中明确提及(详见[DATAREST-623](https://jira.spring.io/browse/DATAREST-623)). (2认同)