2017-05-12 7 views
1

Wir verwenden die neueste Spring 4.2.x und wir sind kürzlich von Jackson Mapper 2.6.3 auf 2.8.8 gegangen, und jetzt registrieren wir Module.Spring und MappingJackson2HttpMessageConverter und registerModule

Hier ist ein Teil von dem, was oder feder servlet.xml wie folgt aussieht:

<mvc:annotation-driven> 
    <mvc:message-converters register-defaults="true"> 
     <bean 
      class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <property name="objectMapper"> 
       <bean class="com.fasterxml.jackson.databind.ObjectMapper"> 
        <property name="dateFormat"> 
         <bean class="java.text.SimpleDateFormat"> 
          <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg> 
         </bean> 
        </property> 
       </bean> 
      </property> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

und hier ist das, was wir uns in Code eine JSON-Datei zur Karte:

  ObjectMapper mapper = new ObjectMapper(); 
    mapper.registerModule(new ParameterNamesModule()); 
    mapper.registerModule(new Jdk8Module()); 
    mapper.registerModule(new JavaTimeModule()); 

Also, was ich Ich würde gerne das "spring-servlet" und "MappingJackson2HttpMessageConverter" konfigurieren, so dass ich die zu registrierenden Module hinzufügen kann.

Ja, wir sind noch nicht dazu gekommen, @Configuration zu verwenden, wir verwenden immer noch das XML, was mir überhaupt nichts ausmacht.

Danke für jede Hilfe!

Antwort

1

So, nach einigen Tests und Versuch und Irrtum, kamen wir mit einem springmvc-servlet.xml, die wie folgt aussieht:

<context:annotation-config /> 
<context:component-scan base-package="com.tomholmes.mycode.core.server.controller" /> 

<mvc:annotation-driven> 
    <mvc:message-converters register-defaults="true"> 
     <bean 
      class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
      <property name="objectMapper" ref="objectMapper" /> 
     </bean> 
    </mvc:message-converters> 
</mvc:annotation-driven> 

<bean id="objectMapper" 
    class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> 

    <property name="featuresToDisable"> 
     <array> 
      <util:constant 
       static-field="com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS" /> 
     </array> 
    </property> 

    <property name="dateFormat"> 
     <bean class="java.text.SimpleDateFormat"> 
      <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg> 
     </bean> 
    </property> 

    <property name="modulesToInstall" 
     value=" 
     com.fasterxml.jackson.datatype.jdk8.Jdk8Module, 
    com.fasterxml.jackson.datatype.jsr310.JavaTimeModule, 
    com.fasterxml.jackson.module.paramnames.ParameterNamesModule" /> 
</bean> 

<bean id="jsonHttpMessageConverter" 
    class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
    <property name="supportedMediaTypes" value="application/json" /> 
    <property name="objectMapper" ref="objectMapper" /> 
</bean> 

<bean 
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
     <list> 
      <ref bean="jsonHttpMessageConverter" /> 
     </list> 
    </property> 
</bean> 

Dieses Setup den Trick zu tun schien.