确实存在任何方式如何注册JSON解串器使用杰克逊2.X和Spring框架,而不是与标注每@JsonDeserialize(using = IdentifiableDeserializer.class)
财产实现特定接口的所有类型的所有类型?如何注册通用JsonDeserializer为它实现给定的接口
通用解串器
public class IdentifiableDeserializer extends JsonDeserializer<IdentifiableEntity> implements ContextualDeserializer{
@Override
public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property)
throws JsonMappingException {
// ...
}
@Override
public IdentifiableEntity deserialize(JsonParser jp, DeserializationContext ctxt)throws IOException, JsonProcessingException {
// ...
}
}
实体应反序列化
public class MyEntity implements IdentifiableEntity{
private Long id;
public getId(){
return id;
}
//...
}
的贡献莫过于
@Service("myEntityService")
private MyEntityService implements IdentifiableService<MyEntity>{
MyEntity findById(Long id){
//...
}
}
我尝试了以下方法,但它不起作用。
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="deserializersByType">
<map key-type="java.lang.Class">
<entry key="xx.yy.IdentifiableEntity">
<bean class="xxx.yyy.IdentifiableDeserializer" />
</entry>
</map>
</property>
</bean>
</property>
</bean>
也许'Module'? – fge