已过时的配置方式:AnnotationMethodHandlerAdapter
https://blog.csdn.net/dailingnan0827/article/details/54928552
<!-- AnnotationMethodHandlerAdapter已经过时 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
<!-- <ref bean="mappingJacksonHttpMessageConverter" />-->
</list>
</property>
</bean>
现在使用的配置方式:RequestMappingHandlerAdapter
https://www.cnblogs.com/qinglangyijiu/p/7742344.html
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list >
<ref bean="mappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
或者使用这种方式:
<mvc:annotation-driven>
<mvc:message-converters>
<ref bean="stringHttpMessageConverter"/>
<ref bean="mappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
<bean id="stringHttpMessageConverter"
class="org.springframework.http.converter.StringHttpMessageConverter"/>
<!--解决IE浏览器json文件下载和json数据中午乱码的问题-->
<bean id="mappingJackson2HttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
使用三方的消息转换器[fastJson]:
https://blog.csdn.net/u014520745/article/details/73147702
<mvc:annotation-driven>
<!--设置不使用默认的消息转换器-->
<mvc:message-converters register-defaults="false">
<!--配置spring的转换器-->
<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
<bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter" />
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
<bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter" />
<!--配置fastjson中实现HttpMessageConverter接口的转换器-->
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter4" >
<!--加入支持的媒体类型,返回contentType-->
<property name="supportedMediaTypes">
<list>
<!--这里顺序不能反,一定要先写text/html,不然IE下会出现下载提示-->
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
https://blog.csdn.net/yfisaboy/article/details/31755631
新增一个关于日期消息转换的转化器,然后注册给Spring
想自定义其他的消息转换器,可以继承更加通用的抽象接口AbstractHttpMessageConverter
https://www.cnblogs.com/fingerboy/p/7753577.html
https://www.cnblogs.com/zfding/p/8322382.html
https://blog.csdn.net/z69183787/article/details/78654678
日期转换方式一【缺点是每个日期属性可能都需要去配置,优点就是简单】:
使用@JsonFormat注解,如下面的例子
class User implements Serializable {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@JsonInclude(value = Include.NON_NULL)
private Date birthday;
//...
}
日期转换方式二【一次配置全局使用,复杂点】:
public class XXXMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
public XXXMappingJackson2HttpMessageConverter() {
this.objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
this.objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
this.objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
}
}
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="cn.xxx.XXXMappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
或者这样配置:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="writeAcceptCharset" value="false"/>
</bean>
<bean class="org.springframework.http.converter.ResourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter"/>
<bean class="cn.xxx.XXXMappingJackson2HttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</list>
</property>
</bean>
日志转换方式三: 或者直接在MappingJackson2HttpMessageConverter指定日期格式转换格式【一次配置全局使用,复杂点】
<mvc:annotation-driven>
<mvc:message-converters>
<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 HH:mm:ss" /> </bean>
</property>
<property name="serializationInclusion">
<value
type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
扩展:在SpringBoot中的配置:
apllication.property文件:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
apllication.yml文件:
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
配置FastJSON在SpringBoot中:
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
// 1、需要先定义一个 convert 转换消息的对象;
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3、在convert中添加配置信息.
fastConverter.setFastJsonConfig(fastJsonConfig);
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}
********************************* 不积跬步无以至千里,不积小流无以成江海 *********************************