首页 > 其他分享 >优化Spring MVC消息转换器实现精度和时间转换

优化Spring MVC消息转换器实现精度和时间转换

时间:2023-04-09 22:09:50浏览次数:38  
标签:FORMAT DEFAULT Spring simpleModule public MVC new 转换器 class

重写ObjectMapper

/**
 * 对象映射器:基于jackson将Java对象转为json,或者将json转为Java对象
 * 将JSON解析为Java对象的过程称为 [从JSON反序列化Java对象]
 * 从Java对象生成JSON的过程称为 [序列化Java对象到JSON]
 */
public class JacksonObjectMapper extends ObjectMapper {

    public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
    public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";

    public JacksonObjectMapper() {
        super();
        //收到未知属性时不报异常
        this.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);

        //反序列化时,属性不存在的兼容处理
        this.getDeserializationConfig().withoutFeatures(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
        SimpleModule simpleModule = new SimpleModule();
        
        // 时间格式化
        simpleModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)));
        simpleModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)));
        simpleModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));
        simpleModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_TIME_FORMAT)));
        simpleModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DEFAULT_DATE_FORMAT)));
        simpleModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DEFAULT_TIME_FORMAT)));

        // Long BigInteger 转 String
        simpleModule.addSerializer(BigInteger.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);

        //注册功能模块 例如,可以添加自定义序列化器和反序列化器
        this.registerModule(simpleModule);
    }
}

添加转换器到SpringMVC

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 扩展mvc框架的消息转换器
     *
     * @param converters
     */
    @Override
    public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
        // 创建消息转换器对象
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        // 设置转换器
        messageConverter.setObjectMapper(new JacksonObjectMapper());
        // 添加转换器
        converters.add(0, messageConverter);
    }
}

标签:FORMAT,DEFAULT,Spring,simpleModule,public,MVC,new,转换器,class
From: https://blog.51cto.com/learningfish/6179204

相关文章

  • 【springboot中使用拦截器】
    1.拦截器原理1.定义拦截器:2.配置拦截器3.解决静态资源被拦截2.拦截器使用实例2.1判断用户有没有登录2.2取消拦截操作1.拦截器原理拦截器的原理很简单,是AOP的一种实现,专门拦截对动态资源的后台请求,即拦截对控制层的请求。使用场景比较多的是判断用户是否有权限请求后台,更拔高一层的......
  • 【spring学习笔记】(二)Spring MVC注解配置 参数转换注解@RequestMapping@RequestParam
    @TOC介绍在SpringMVC项目中,<\context:component-scan>配置标签还会开启@Request-Mapping、@GetMapping等映射注解功能(也就是会注册RequestMappingHandler-Mapping和RequestMappingHandlerAdapter等请求映射和处理等组件),但是<context:component-scan>不支持数据转换或验证等注解功......
  • Spring Framework面试题
    Spring与SpringFramework以及SpringBoot之间的是什么关系。Spring是一个广泛应用于Java开发的企业级开源框架。它的设计初衷是通过依赖注入(DependencyInjection,DI)和面向切面编程(AspectOrientedProgramming,AOP)等技术,简化Java应用程序的开发、测试和部署。Spring提......
  • SpringSecurity之WebSecurity和HttpSecurity
    SpringSecurity启动过程中有两个重要的类。分别是WebSecurity和HttpSecurity。 看看WebSecurity的定义:publicfinalclassWebSecurityextendsAbstractConfiguredSecurityBuilder<Filter,WebSecurity>implementsSecurityBuilder<Filter>,ApplicationContextAware,Servl......
  • SpringSecurity源码之WebSecurity构建FilterChainProxy
    主要参考了https://mp.weixin.qq.com/s/D0weIKPto4lcuwl9DQpmvQ。SpringSecurity版本是2.7.9。将SpringBoot和SpringSecurity结合使用,SpringSecurity自动配置类是SecurityAutoConfiguration.class。 @AutoConfiguration@ConditionalOnClass({DefaultAuthenticationEventPubli......
  • SpringBoot集成WebSocket
    SpringBoot集成WebSocket参考https://www.cnblogs.com/xuwenjin/p/12664650.html前言:WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC6455,并由RFC7936补充规范。WebSocketAPI也被W3C定为标准。WebSocket使得客户端和服务......
  • idea社区版本创建springboot项目的三种方式
      文章目录一、前言一、方式1:spring官方创建springboot项目1、打开在线的springinitializr2、选择项目的语言、版本、依赖等3、解压源码包,并使用IDEA打开4、测试接口二、方式2:社区idea安装Spring插件1、添加插件三、方式3:(麻烦)手动maven创建springboot项目一、前言导......
  • SpringSecurity体系结构
    我是通过松哥的博客学习SpringSecurity的,地址是http://itboyhub.com/2021/01/26/spring-security-guide/。对SpringSecurity的使用有了初步的认识。并根据松哥的博客跟了源码,但是每个人的思路不一样,看完之后还有点模糊。对其中的一些用法不够深刻。想了下还是根据自己的思路记录下......
  • springboot 访问服务器静态资源
    一 应用场景一个springboot的应用,需要访问服务器/home/webapp/upload 目录下的静态资源。一般是动态上传的图片,需要访问时,需要用到。二实现方式1.配置文件wycms:#文件路径示例(Windows配置file:D:/wycms/uploadPath,Linux置file:/home/wycms/uploadPath)out......
  • 【Spring专题】「技术原理」从源码角度去深入分析关于Spring的异常处理ExceptionHandl
    ExceptionHandler的作用ExceptionHandler是Spring框架提供的一个注解,用于处理应用程序中的异常。当应用程序中发生异常时,ExceptionHandler将优先地拦截异常并处理它,然后将处理结果返回到前端。该注解可用于类级别和方法级别,以捕获不同级别的异常。在Spring中使用ExceptionHandler非......