【发布时间】:2015-11-03 14:31:10
【问题描述】:
我正在使用 spring-data-rest 2.4.1 将实体公开为休息资源。
我还实现了一个ResourceProcessor 来为资源添加自定义链接
@Component
public class MyEntityResourceProcessor implements ResourceProcessor<Resource<MyEntity>> {
@Override
public Resource<MyEntity> process(Resource<MyEntity> resource) {
resource.add(linkTo(methodOn(CustomController.class).getFeatures(resource.getContent().getId())).withRel("customRel"));
return resource;
}
}
这适用于单个项目资源。但我也设置了一个ExcerptProjection 来减少集合资源中显示的属性:
@Projection(name = "myExcerptProjection", types = MyEntity.class)
interface MyExcerptProjection {
String getName();
String getSlogan();
}
使用投影时,我的MyEntityResourceProcessor 没有使用,并且自定义链接丢失。
我可以通过为投影实现 ResourceProcessor 来引入链接,如下所示:
public class MyEntityProjectionResourceProcessor implements ResourceProcessor<Resource<MyExcerptProjection>>
但我想避免这种情况,因为:
- 是代码重复
- 我缺少投影中的实体 ID,因此无法生成链接
有什么想法可以让一个 ResourceProcessor 也适用于我的 ExcerptProjection?
【问题讨论】:
标签: java spring spring-data-rest