HttpMessageConverter 添加 java8 LocateTime 时间转换
作者:智慧源点
- 2024-03-05 北京
本文字数:2150 字
阅读完需:约 7 分钟
HttpMessageConverter 简介
HttpMessageConverter 是 SpringMVC 中提供的一个策略接口,它是一个消息转换器类,Spring Mvc 中就是由 HttpMessageConverter 负责转换 HTTP 的请求和响应。
1、jackson 方式 converter 实现
@Configuration@ComponentScan(basePackages = {"com.ele.common"})public class WebMvcConfig extends RestWebConfig implements WebMvcConfigurer {
@Autowired private RequestHeaderInterceptor requestHeaderInterceptor;
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(requestHeaderInterceptor); }
@Override public void addFormatters(FormatterRegistry registry) {// registry.addConverter(new LongDateConverter()); }
@Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { HttpMessageConverter<?> converter = converters.stream().filter(e -> e instanceof MappingJackson2HttpMessageConverter).findFirst().orElse(null); if (converter != null) { MappingJackson2HttpMessageConverter jackson = (MappingJackson2HttpMessageConverter) converter; ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); JavaTimeModule javaTimeModule = new JavaTimeModule(); javaTimeModule.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DatePattern.NORM_DATETIME_FORMATTER)); javaTimeModule.addSerializer(LocalDate.class,new LocalDateSerializer(DatePattern.NORM_DATE_FORMATTER)); javaTimeModule.addSerializer(LocalTime.class,new LocalTimeSerializer(DatePattern.NORM_TIME_FORMATTER)); javaTimeModule.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DatePattern.NORM_DATETIME_FORMATTER)); javaTimeModule.addDeserializer(LocalDate.class,new LocalDateDeserializer(DatePattern.NORM_DATE_FORMATTER)); javaTimeModule.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DatePattern.NORM_TIME_FORMATTER)); objectMapper.registerModule(javaTimeModule).registerModule(new ParameterNamesModule()); jackson.setObjectMapper(objectMapper); converters.add(0, jackson); } } @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") // 所有接口 .allowCredentials(true) // 是否发送 Cookie .allowedOriginPatterns("*") // 支持域 .allowedMethods("GET", "POST", "PUT", "DELETE") // 支持方法 .allowedHeaders("*") .exposedHeaders("*"); }}复制代码
2、fastjson 方式 converter 实现
/** * 使用fastJson 转换 * 字段强转string使用注解方式 @JSONField(serializeUsing = ToStringSerializer.class) * * @return fastJson http消息转换器 */ @Bean public HttpMessageConverters fastJsonMessageConverters() { List<HttpMessageConverter<?>> converters = new ArrayList<>(); //需要定义一个convert转换消息的对象; FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); //添加fastJson的配置信息; FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue); //fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); //全局时间配置// fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");// fastJsonConfig.setCharset(Charset.forName("UTF-8")); //处理中文乱码问题 List<MediaType> fastMediaTypes = new ArrayList<>(); fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); //在convert中添加配置信息. fastConverter.setSupportedMediaTypes(fastMediaTypes); fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(0, fastConverter); return new HttpMessageConverters(converters); }复制代码
有你所需的学习资料:极客时间、图灵、Python、AI 等,微信联系:wytwhdwdd
划线
评论
复制
发布于: 刚刚阅读数: 3
智慧源点
关注
终身学习、研究java架构、ai大模型 2019-12-06 加入
商业合作: wytwhdwdd







评论