복붙노트

[SPRING] 스프링 3.1이있는 Jackson 2.0

SPRING

스프링 3.1이있는 Jackson 2.0

Spring MVC 3.1은 Jackson 2.0과 호환 가능합니까? 스프링 MVC가 클래스 패스에서 Jackson을 자동으로 감지하고 JSON 콘텐츠 유형을 사용하는 요청에 대해 Jackson에게 위임 한 경우에도 사용할 수 있습니까?

해결법

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

    1.Jackson 2에 대한 지원은 Spring 3.2에 추가되었으며 Spring 3.1.2 (SPR-9507)로 다시 백 포트되었습니다.

    Jackson 2에 대한 지원은 Spring 3.2에 추가되었으며 Spring 3.1.2 (SPR-9507)로 다시 백 포트되었습니다.

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

    2.Keith Donald (스프링 소스)는 다음과 같이 잠시 뒤를 이어졌습니다.

    Keith Donald (스프링 소스)는 다음과 같이 잠시 뒤를 이어졌습니다.

    위의 요지에서 찾은 MappingJackson2HttpMessageConverter를 시도하지는 않았지만 작동하지 않는다면 놀라게 할 것입니다.

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

    3.Spring 3.1.2부터는 classpath에 jackson-databind jar를 추가하기 만하면된다.

    Spring 3.1.2부터는 classpath에 jackson-databind jar를 추가하기 만하면된다.

    Maven에서는 다음과 같이 설정할 수 있습니다 :

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
    </dependency>
    

    나머지 마법은 봄에 자동으로 수행됩니다.

    참조 : http://norrisshelton.wordpress.com/2012/07/15/spring-3-mvc-with-json-via-jackson-2-0/

  4. ==============================

    4.Spring 3.1.2 및 Jackson 2 -

    Spring 3.1.2 및 Jackson 2 -

    그래서 후손을 위해 잭슨 변환기를 구성하기위한 해킹 (또는 공식적인 방법)을 나열 할 것입니다. 이 특별한 경우에는 ISO-8601 형식으로 날짜를 반환하도록 변환기를 구성합니다.

    package foo.bar.JacksonConfig;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.BeanPostProcessor;
    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    import org.springframework.stereotype.Component;
    
    @Component
    public class JacksonConfig implements BeanPostProcessor {
    
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            return bean;
        }
    
        public Object postProcessAfterInitialization(Object bean, String beanName)
                throws BeansException {
            if (bean instanceof MappingJackson2HttpMessageConverter) {
                MappingJackson2HttpMessageConverter jsonConverter =
                        (MappingJackson2HttpMessageConverter) bean;
                ObjectMapper objectMapper = jsonConverter.getObjectMapper();
                objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
                jsonConverter.setObjectMapper(objectMapper);
            }
            return bean;
        }
    }
    
  5. ==============================

    5.분명한 것은, Spring 3.1은 Jackson 2를 기본적으로 지원하지 않는다는 것입니다. Spring 3.2에 있습니다.

    분명한 것은, Spring 3.1은 Jackson 2를 기본적으로 지원하지 않는다는 것입니다. Spring 3.2에 있습니다.

  6. ==============================

    6.Jackson 2.0과 호환되는 Spring MVC 3.1을 테스트하지 않았습니다. 하지만 3.0.5 호환 문제가 발생합니다. 마지막으로 나는 Spring MVC 3.0.5가 Jackson 1.0.0과 만 호환된다는 것을 발견했다. 확실히 Jackson 1.5.3은 호환되지 않는다 !!!

    Jackson 2.0과 호환되는 Spring MVC 3.1을 테스트하지 않았습니다. 하지만 3.0.5 호환 문제가 발생합니다. 마지막으로 나는 Spring MVC 3.0.5가 Jackson 1.0.0과 만 호환된다는 것을 발견했다. 확실히 Jackson 1.5.3은 호환되지 않는다 !!!

  7. from https://stackoverflow.com/questions/10420040/jackson-2-0-with-spring-3-1 by cc-by-sa and MIT license