Spring Boot 项目中自定义 ObjectMapper 配置的自动装配

问题描述 投票:0回答:0

我想集中配置 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”为空

java spring-boot
© www.soinside.com 2019 - 2024. All rights reserved.