gpt4 book ai didi

java - 将 Spring 上下文添加到 Jackson 生成的对象

转载 作者:太空宇宙 更新时间:2023-11-04 13:48:12 26 4
gpt4 key购买 nike

我想尝试向数据对象添加业务逻辑。因此,我想让 Jackson 将 Spring 应用程序上下文自动注入(inject)到每个生成的对象(从 JSON 生成)。

有没有办法告诉 Jackson 为每个生成的对象添加 Spring 上下文?

最佳答案

使用@JacksonInject用于指定值应来自对象映射器/读取器的位置的注释。

@Test
public void inject_global_context_object() throws Exception {
ContextObject ctx = new ContextObject();
mapper.setInjectableValues(new InjectableValues.Std()
.addValue(ContextObject.class, ctx));
DataNeedingContext data = mapper.readValue("{\"prop\":\"foo\"}",
DataNeedingContext.class);
assertThat(data.ctx, sameInstance(ctx));
assertThat(data.prop, equalTo("foo"));
}

@Test
public void inject_local_context_object() throws Exception {
ContextObject ctx = new ContextObject();
DataNeedingContext data = mapper.reader(DataNeedingContext.class)
.with(new InjectableValues.Std()
.addValue(ContextObject.class, ctx))
.readValue("{\"prop\":\"foo\"}");
assertThat(data.ctx, sameInstance(ctx));
assertThat(data.prop, equalTo("foo"));
}

public static class ContextObject {
}

public static class DataNeedingContext {
private final ContextObject ctx;
public String prop;

public DataNeedingContext(@JacksonInject ContextObject ctx) {
this.ctx = ctx;
}
}

关于java - 将 Spring 上下文添加到 Jackson 生成的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30605035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com