복붙노트

[SPRING] 순수 자바에서 스프링 기본 설정을 무시하지 않고 스프링 부트 응용 프로그램에서 Jackson을 구성하는 방법

SPRING

순수 자바에서 스프링 기본 설정을 무시하지 않고 스프링 부트 응용 프로그램에서 Jackson을 구성하는 방법

내 봄 부팅 응용 프로그램에서 나는 Jackson을 사용하여 ObjectMapper를 필요한 곳에 주입하여 객체를 직렬화합니다. 이 답변을 찾았습니다 : https://stackoverflow.com/a/32842962/447426 하지만이 잭은 jacksons 기본 설정을 사용하여 새로운 매퍼를 만듭니다.

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

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

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

해결법

  1. ==============================

    1.이 경우에는 Jackson2ObjectMapperBuilderCustomizer를 사용해야합니다.

    이 경우에는 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(...)      
                }
            };
        }
    }
    
  2. ==============================

    2.다양한 잭슨 기능을 사용하거나 사용하지 않으려면 application.properties 파일에서 올바른 속성 만 설정하면됩니다.

    다양한 잭슨 기능을 사용하거나 사용하지 않으려면 application.properties 파일에서 올바른 속성 만 설정하면됩니다.

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

    추신 나는 이것을 주석으로 추가하기를 원했을 것이다.

  3. from https://stackoverflow.com/questions/48519772/how-to-configure-jackson-in-spring-boot-application-without-overriding-springs-d by cc-by-sa and MIT license