最近简单建了个项目整合了下swagger3.0给java同学用,项目内的一些配置都是cv的以前老项目。发现接口返回的时间数据转换失败,结果都是UTC格式时间。仔细研究了下发现是配置写法问题导致fastjson转换不生效。顺便解决了下springMVC配置继承的WebMvcConfigurerAdapter已经废弃的问题(最终正确配置代码末尾)
错误示例:
结果:
修改后配置如下:
结果
还有一种网上流传的配置是继承WebMvcConfigurationSupport,这种情况配置会导致其他swagger3.0界面无法访问
最终配置代码
package com.project.work.config;
//...
/**
* Spring MVC 配置
*/
@Configuration
public class SpringMvcConfigurer implements WebMvcConfigurer {
// 重点 把该转换器注入
@Bean
public HttpMessageConverter fastJsonHttpMessageConverters(){
FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig=new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
fastConverter.setFastJsonConfig(fastJsonConfig);
fastConverter.setDefaultCharset(Charset.forName("UTF-8"));
HttpMessageConverter<?> converter=fastConverter;
return converter;
}
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(fastJsonHttpMessageConverters());
}
//统一异常处理
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {}
//解决跨域问题
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedHeaders("*")
.allowedMethods("*")
.allowedOrigins("*");
}
//添加拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {}
}