有没有办法为 Jackson 反序列化器提供一个来自“外部”(例如 DI 容器)的默认值,该值将在反序列化对象时使用,在本例中为 tagRegistry?
@JsonCreator
public ExtractionRule(@JsonProperty("id") String id,
TagRegistry tagRegistry) {
this.id = id;
this.tagRegistry = tagRegistry;
}
我找不到简单的方法来做到这一点。
最佳答案
你可以尝试@JacksonInject。将此成员添加到 ExtractionRule 类:
@JacksonInject("tagRegistry")
private TagRegistry tagRegistry;
并在反序列化之前将tagRegistry注入(inject)到ObjectMapper中:
InjectableValues.Std injectableValues = new InjectableValues.Std();
injectableValues.addValue("tagRegistry", tagRegistry);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setInjectableValues(injectableValues);
我还没有尝试在构造函数中使用它,不确定这是否有效。 您可以在这里找到更多示例:
关于java - 在 Jackson 构造函数中使用自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58605008/