tjh*_*s66 3 java spring json spring-mvc jackson-modules
我们正在使用最新的 Spring 4.2.x,最近从 Jackson Mapper 2.6.3 升级到 2.8.8,现在我们正在注册模块。
\n\n这是 spring-servlet.xml 的一部分:
\n\n<mvc:annotation-driven>\n <mvc:message-converters register-defaults="true">\n <bean\n class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">\n <property name="objectMapper">\n <bean class="com.fasterxml.jackson.databind.ObjectMapper">\n <property name="dateFormat">\n <bean class="java.text.SimpleDateFormat">\n <constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg>\n </bean>\n </property>\n </bean>\n </property>\n </bean>\n </mvc:message-converters>\n</mvc:annotation-driven>\nRun Code Online (Sandbox Code Playgroud)\n\n这是我们在代码中映射 json 文件的内容:
\n\n\xe2\x80\x82 ObjectMapper mapper = new ObjectMapper();\n mapper.registerModule(new ParameterNamesModule());\n mapper.registerModule(new Jdk8Module());\n mapper.registerModule(new JavaTimeModule());\nRun Code Online (Sandbox Code Playgroud)\n\n因此,我想做的是配置“spring-servlet”和“MappingJackson2HttpMessageConverter”,以便我可以添加要注册的模块。
\n\n是的,我们还没有开始使用@Configuration,我们仍在使用XML,我根本不介意。
\n\n谢谢你的帮助!
\n因此,经过一些测试和反复试验,我们想出了一个 springmvc-servlet.xml,如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)
这个设置似乎起到了作用。
| 归档时间: |
|
| 查看次数: |
4489 次 |
| 最近记录: |