/** 
 | 
 * Copyright (c) 2018 人人开源 All rights reserved. 
 | 
 * 
 | 
 * https://www.renren.io 
 | 
 * 
 | 
 * 版权所有,侵权必究! 
 | 
 */ 
 | 
  
 | 
package com.zt.core.config.mvc; 
 | 
  
 | 
import com.fasterxml.jackson.databind.DeserializationFeature; 
 | 
import com.fasterxml.jackson.databind.ObjectMapper; 
 | 
import com.fasterxml.jackson.databind.module.SimpleModule; 
 | 
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; 
 | 
import com.zt.core.db.annotation.QueryParamMethodArgumentResolver; 
 | 
import org.springframework.context.annotation.Bean; 
 | 
import org.springframework.context.annotation.Configuration; 
 | 
import org.springframework.http.converter.ByteArrayHttpMessageConverter; 
 | 
import org.springframework.http.converter.HttpMessageConverter; 
 | 
import org.springframework.http.converter.ResourceHttpMessageConverter; 
 | 
import org.springframework.http.converter.StringHttpMessageConverter; 
 | 
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; 
 | 
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter; 
 | 
import org.springframework.web.method.support.HandlerMethodArgumentResolver; 
 | 
import org.springframework.web.servlet.config.annotation.CorsRegistry; 
 | 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 
 | 
  
 | 
import java.text.SimpleDateFormat; 
 | 
import java.util.List; 
 | 
import java.util.TimeZone; 
 | 
  
 | 
@Configuration("mvc") 
 | 
public class WebMvcConfig implements WebMvcConfigurer { 
 | 
  
 | 
    @Override 
 | 
    public void addCorsMappings(CorsRegistry registry) { 
 | 
        registry.addMapping("/**").allowedOrigins("*").allowCredentials(true) 
 | 
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").maxAge(3600); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { 
 | 
        converters.add(new ByteArrayHttpMessageConverter()); 
 | 
        converters.add(new StringHttpMessageConverter()); 
 | 
        converters.add(new ResourceHttpMessageConverter()); 
 | 
        converters.add(new AllEncompassingFormHttpMessageConverter()); 
 | 
        converters.add(new StringHttpMessageConverter()); 
 | 
        converters.add(jackson2HttpMessageConverter()); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { 
 | 
        argumentResolvers.add(new QueryParamMethodArgumentResolver()); 
 | 
    } 
 | 
  
 | 
    @Bean 
 | 
    public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() { 
 | 
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); 
 | 
        ObjectMapper mapper = new ObjectMapper(); 
 | 
  
 | 
        // 日期格式转换 
 | 
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
 | 
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); 
 | 
        mapper.setTimeZone(TimeZone.getTimeZone("GMT+8")); 
 | 
  
 | 
        // Long类型转String类型 
 | 
        SimpleModule simpleModule = new SimpleModule(); 
 | 
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance); 
 | 
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); 
 | 
        mapper.registerModule(simpleModule); 
 | 
  
 | 
        converter.setObjectMapper(mapper); 
 | 
        return converter; 
 | 
    } 
 | 
  
 | 
} 
 |