programing

순수 Java에서 스프링 기본 설정을 재정의하지 않고 스프링 부팅 애플리케이션에서 Jackson을 구성하는 방법

javajsp 2023. 8. 22. 21:56

순수 Java에서 스프링 기본 설정을 재정의하지 않고 스프링 부팅 애플리케이션에서 Jackson을 구성하는 방법

내 스프링 부트 애플리케이션에서 나는 잭슨을 사용하여 물체를 직렬화합니다.ObjectMapper필요한 곳에저는 다음과 같은 답을 찾았습니다: https://stackoverflow.com/a/32842962/447426 하지만 이것은 Jacksons 기본 설정으로 새로운 지도자를 만듭니다.

다른 한편으로는 공식 문서에서 이것을 발견했습니다.저는 잘 이해하지 못했습니다.예제 코드가 없습니다.

그렇다면 스프링의 기본 객체 매퍼를 기반으로 스프링 객체 매퍼를 구성하는 방법은 무엇입니까?

이 구성은 주입되는 모든 "ObjectMapper"에서 활성화되어야 합니다.

사용해야 합니다.Jackson2ObjectMapperBuilderCustomizer이 때문에

@Configuration
public class JacksonConfiguration {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer addCustomBigDecimalDeserialization() {
        return new Jackson2ObjectMapperBuilderCustomizer() {

            @Override
            public void customize(Jackson2ObjectMapperBuilder jacksonObjectMapperBuilder) {
               jacksonObjectMapperBuilder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
               // Add your customization
               // jacksonObjectMapperBuilder.featuresToEnable(...)      
            }
        };
    }
}

왜냐하면Jackson2ObjectMapperBuilderCustomizer는 함수형이며, Java 8은 보다 컴팩트한 코드를 지원합니다.

@Configuration
public class JacksonConfiguration {

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer addCustomBigDecimalDeserialization() {
        return builder -> {
            builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
            // Add your customization
            // builder.featuresToEnable(...)      
            };
        }
    }
}

다른 한편으로는 공식 문서에서 이것을 발견했습니다.저는 잘 이해하지 못했습니다.예제 코드가 없습니다.

이는 단지 당신이 올바른 속성을 설정하기만 하면 된다는 것입니다.application.properties다양한 Jackson 기능을 사용하거나 사용하지 않도록 설정합니다.

spring.jackson.mapper.default-view-inclusion=false
spring.jackson.deserialization.fail-on-unknown-properties=false

언급URL : https://stackoverflow.com/questions/48519772/how-to-configure-jackson-in-spring-boot-application-without-overriding-springs-d