我想集中配置 jackson ObjectMapper 并在我的应用程序中的任何地方使用相同的 ObjectMapper。 DI 不起作用的以下代码可能有什么问题?
我在 src/main/java/migrationtool/config 中添加了一个 CustomJacksonConfig.java:
@Configuration
public class CustomJacksonConfig {
@Bean
public ObjectMapper mapper() {
return new ObjectMapper();
}
}
在某些类中使用它:
public abstract class HcmsEntity implements JsonSerializable {
@Autowired
private ObjectMapper mapper;
@Override
public JsonNode serialize() {
return this.mapper.valueToTree(this);
}
}
具体类:
public class Paragraph extends HcmsComponent{
@JsonWrapped("content") // module to be extended in the CustomJacksonConfig
public String text;
}
单元测试:
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class ParagraphTest {
@Test
void serializeParagraph() {
Paragraph paragraph = ParagraphMock.createParagraphWithID(1);
paragraph.setIdentifier("p:1:1.p");
assertThat(paragraph.serialize()).hasToString(ParagraphMock.getExpectedJson(1));
}
}
在测试 serialize() 的单元测试中
10:08:00.693 [main] 错误段落 - java.lang.NullPointerException: 无法调用 “com.fasterxml.jackson.databind.ObjectMapper.valueToTree(对象)” 因为“this.mapper”为空