2015-11-03 79 views
3

我使用spring-data-rest 2.4.1將實體公開爲其他資源。從ResourceProcessor摘錄投影和自定義鏈接

我還實施了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?

回答

1

我用我的問題創建了一個JIRA問題。

普萊舍看到https://jira.spring.io/browse/DATAREST-713

答案是春天的數據休息不能使用實體資源爲處理器和預測,你需要資源的處理器爲您的投影爲好。

爲了避免代碼重複,一個選項是引入投影和實體擴展/實現的接口。然後我們可以爲這個接口實現一個資源處理器,它將應用於投影和實體。