Spring Data Rest學習篇----Object Representation (實體物件展現)
阿新 • • 發佈:2019-02-08
Spring Data Rest---Object Representation(實體物件展現)
對應spring-data-rest-reference 的第7章
在HTTP請求中,Spring Data Rest為一個請求返回一個指定資料格式的物件,目前,Spring Data Rest只支援JSON格式資料,在未來也可以支援其他格式的資料展現。如果使用者發現物件模型沒有正確地轉換到JSON資料,那麼你可以有很多種方法結構化你的資料。
在Jackson的ObjectMapper中新增自定義的序列化和反序列化工具,為了容納最大比例的使用者事例,Spring Data Rest儘量正確地渲染物件模型,必要的時候,它會為管理到的bean物件建立連結,而且會序列化沒有被管理的bean,作為普通的Java物件。
例子:抽象類註冊bean
在一個實體類中使用到了抽象類的物件作為屬性,Jackson預設是不識別此抽象類的具體實現類。
@Entity
public class MyEntity {
@OneToMany
private List<MyInterface> interfaces;
}
可以通過兩種方式去實現抽象類的子類實現選擇,
1.第一種方式
@Override protected void configureJacksonObjectMapper(ObjectMapper objectMapper) { objectMapper.registerModule(new SimpleModule("MyCustomModule") { @Override public void setupModule(SetupContext context) { context.addAbstractTypeResolver( new SimpleAbstractTypeResolver().addMapping(MyInterface.class, MyInterfaceImpl.class) ); } }); }
2.第二種方式
@Override public void setupModule(SetupContext context) { SimpleSerializers serializers = new SimpleSerializers(); SimpleDeserializers deserializers = new SimpleDeserializers(); serializers.addSerializer(MyEntity.class, new MyEntitySerializer()); deserializers.addDeserializer(MyEntity.class,new MyEntityDeserializer()); context.addSerializers(serializers); context.addDeserializers(deserializers); }