Ember 具有 Spring 的 @RequestBody 和对象标识的数据

Ember Data with Spring's @RequestBody and Object Identities

我的后端是 Spring(启动),我对它和 EmberJS 的了解已经很深了。现在遇到了一个小问题,因为当我从 Ember-Data 创建新记录时,它发布了具有身份的对象:

{ "thing": {"name": "The Thing"} }

Jackson 提供的默认映射不假定身份,因此它无法将 JSON 映射到实体。我基本上有 3 个选择,我想知道是否还有其他人走这条路,他们是如何解决这个问题的。

选项 1 - 创建用身份包装我的实体的 DTO

public class Thing {
  private String name;
}

// use this for the @RequestBody
public class ThingDTO {
  private Thing thing;
}

选项 2 - 通过自定义映射器配置 Jackson 以将 JSON 反序列化为我的标准对象。

选项 3 - 为 Ember-Data 配置 adapter/serializer,使其不包含对象标识。

我使用@JsonRootName 并配置映射器来解包根值。

@JsonRootName(value = "thing")
public class Thing {

}

然后在Application.java:

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
    MappingJackson2HttpMessageConverter converter =
            new MappingJackson2HttpMessageConverter(mapper);
    return converter;
}