Update:
I tried to debug in jackson source code and find out that in the method
deserialize(JsonParser jp, DeserializationContext ctxt)
of
Jackson processes @JsonTypeInfo
before choosing which Deserializer to use, probably because the choice of Deserializer could depend generally on the type. However, you can easily disable this on a per-field basis the same way you specify custom Deserializer - by annotating the field directly:
@JsonDeserialize(using = DefinitionDeserializer.class)
@JsonTypeInfo(use = JsonTypeInfo.Id.NONE)
private Definition definition;