Spring Data Rest Rest资源上的自定义链接

时间:2016-10-31 18:01:34

标签: java spring-data-rest

Spring Data Rest存储库指出可以将自定义链接添加到实体,如下所示:

http://docs.spring.io/spring-data/rest/docs/current/reference/html/#_the_resourceprocessor_interface

给出示例:

@Bean
public ResourceProcessor<Resource<Person>> personProcessor() {

   return new ResourceProcessor<Resource<Person>>() {

     @Override
     public Resource<Person> process(Resource<Person> resource) {

      resource.add(new Link("http://localhost:8080/people", "added-link"));
      return resource;
     }
   };
}

显然硬编码很糟糕,那么如何编写可以动态获取应用程序中其他资源路径的组件呢?

显而易见的解决方案似乎是注入RepositoryRestConfiguration的实例,但是注入配置中此区域的所有查找都返回null,即使存储库已公开并且正在为此资源工作。

其他数据,如投影定义,带有ID的类等,按预期方式存在于注入的RepositoryRestConfiguration中。那么为什么我会为这些查找获取null?

@Component
public class CaseResourceProcessor implements ResourceProcessor<Resource<Case>>
{
  @Autowired
  private RepositoryRestConfiguration configuration;

  @Override
  public Resource<Case> process(Resource<Case> resource)
  {
    //null
    configuration.getResourceMappingForDomainType(Submission.class).getPath();

    //null
    configuration.getResourceMappingForRepository(SubmissionRepository.class).getPath();

    resource.add(new Link("...."));

    return resource;
  }
}

这个领域的大部分代码都被弃用了,但是不清楚究竟应该使用什么代码(尽管我希望已弃用的代码能够运行)。

基本上,我如何以编程方式发现特定实体或存储库的URL。

1 个答案:

答案 0 :(得分:6)

发现这可以按如下方式完成:

administration