복붙노트

[SPRING] 세계적으로 봄에 잭슨을 구성하는 방법은 무엇입니까?

SPRING

세계적으로 봄에 잭슨을 구성하는 방법은 무엇입니까?

deserialize 객체를 직렬화하려면 Jackson을 흐름으로 사용하고 있습니다.

@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
private LocalDate openingDate 

어떻게 이것을 모든 속성에 추가 할 필요가 없도록 전역으로 기본값으로 설정합니까?

XML 구성 사용.

해결법

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

    1.Java 기반 구성을 사용하는 경우 WebMvcConfigurerAdapter를 확장하는 구성 클래스를 만들고 다음을 수행 할 수 있습니다.

    Java 기반 구성을 사용하는 경우 WebMvcConfigurerAdapter를 확장하는 구성 클래스를 만들고 다음을 수행 할 수 있습니다.

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        final MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        final ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        converter.setObjectMapper(objectMapper);
        converters.add(converter);
        super.configureMessageConverters(converters);
    }
    

    여기서는 ObjectMapper를 원하는대로 구성하고 변환기로 설정할 수 있습니다.

  2. ==============================

    2.Spring Jackson2ObjectMapperFactoryBean에서 serializer를 구성하고 (완전한 클래스 이름을 제공), MappingJackson2HttpMessageConverter와 바인딩 할 수 있습니다. 다음은 XML 구성 스 니펫의 예입니다.

    Spring Jackson2ObjectMapperFactoryBean에서 serializer를 구성하고 (완전한 클래스 이름을 제공), MappingJackson2HttpMessageConverter와 바인딩 할 수 있습니다. 다음은 XML 구성 스 니펫의 예입니다.

    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
       <property name="objectMapper">
         <bean class="org.springframework.web.context.support.Jackson2ObjectMapperFactoryBean"
           p:failOnEmptyBeans="false"
           p:indentOutput="true">
           <property name="serializers">
             <array>
               <bean class="LocalDateSerializer" />
             </array>
           </property>
         </bean>
       </property>
     </bean>
    

    문서에 대한 링크

  3. ==============================

    3.자네는 java datetime이나 jodatime과 같은 것들을 사용하기위한 모듈을 설치할 수있다. 이것 체크 아웃 :

    자네는 java datetime이나 jodatime과 같은 것들을 사용하기위한 모듈을 설치할 수있다. 이것 체크 아웃 :

        @Bean
        Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
            JavaTimeModule module = new JavaTimeModule();
            module.addSerializer(OffsetDateTime.class, JSR310DateTimeSerializer.INSTANCE);
            module.addSerializer(ZonedDateTime.class, JSR310DateTimeSerializer.INSTANCE);
            module.addSerializer(LocalDateTime.class, JSR310DateTimeSerializer.INSTANCE);
            module.addSerializer(Instant.class, JSR310DateTimeSerializer.INSTANCE);
            module.addDeserializer(LocalDate.class, JSR310LocalDateDeserializer.INSTANCE);
            return new Jackson2ObjectMapperBuilder()
                    .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
                    .findModulesViaServiceLoader(true)
                    .modulesToInstall(module);
        }
    
  4. ==============================

    4.Spring Boot를 사용하면 새로운 Module을 등록함으로써이를 달성 할 수 있습니다.

    Spring Boot를 사용하면 새로운 Module을 등록함으로써이를 달성 할 수 있습니다.

    @Configuration
    public class AppConfig {
    
        @Bean
        public Module module() {
            SimpleModule module = new SimpleModule("Module", new Version(1, 0, 0, null, null, null));
            module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());
            module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer());
    
            return module;
        }
    }
    

    여기에 설명 된대로

    그리고 여기:

  5. from https://stackoverflow.com/questions/37492249/how-to-configure-jackson-with-spring-globally by cc-by-sa and MIT license