Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置Jackson';带弹簧靴的constructorDetector?_Java_Spring_Spring Boot_Jackson - Fatal编程技术网

Java 如何设置Jackson';带弹簧靴的constructorDetector?

Java 如何设置Jackson';带弹簧靴的constructorDetector?,java,spring,spring-boot,jackson,Java,Spring,Spring Boot,Jackson,我想配置Jackson,使其能够使用构造函数自动反序列化,而不需要注释。使用SpringBoot,这对于大多数构造函数来说是开箱即用的,但对于单参数构造函数则不是 Jackson 2.12还发布了一个配置选项,用于为单参数构造函数启用反序列化: ObjectMapper mapper = JsonMapper.builder() .constructorDetector(ConstructorDetector.USE_PROPERTIES_BASED) .build() 但是,

我想配置Jackson,使其能够使用构造函数自动反序列化,而不需要注释。使用SpringBoot,这对于大多数构造函数来说是开箱即用的,但对于单参数构造函数则不是

Jackson 2.12还发布了一个配置选项,用于为单参数构造函数启用反序列化:

ObjectMapper mapper = JsonMapper.builder()
    .constructorDetector(ConstructorDetector.USE_PROPERTIES_BASED)
    .build()
但是,这并不使用通常的功能启用/禁用界面。如何使用Spring Boot进行设置

  • 我不想丢失任何应用于ObjectMapperbean的Spring引导自动配置
  • 我不能定义Jackson2ObjectMapperBuilderbean,因为从SpringBoot2.4.1开始,它还没有被更新以允许设置constructorDetector

  • 定义
    Jackson2ObjectMapperBuilder
    ObjectMapper
    的bean将阻止对这些bean应用任何自动配置

    相反,您可以定义类型为
    Jackson2ObjectMapperBuilderCustomizer
    的bean,它是一个lambda,允许您在Spring引导自动配置的
    Jackson2ObjectMapperBuilder
    上调用其他方法

    此外,
    Jackson2ObjectMapperBuilder
    具有方法
    postconfiguer
    ,这是另一个回调,允许您在自动配置的
    ObjectMapper
    上调用方法

    把这些放在一起:

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
        return builder -> builder.postConfigurer(mapper ->
                mapper.setConstructorDetector(USE_PROPERTIES_BASED)
        );
    }