文档章节

SpringBoot使用FastJson 替换 jackson

ol_O_O_lo
 ol_O_O_lo
发布于 2017/09/07 17:00
字数 270
阅读 302
收藏 0

fastJson使用比较多。用起来顺手。所以想把jackson替换掉。

  1. 引入最新fastjson。maven引入不用多说啦。
  2. 新建类,继承自WebMvcConfigurerAdapter,重写extendMessageConverters方法。

import com.alibaba.fastjson.serializer.SerializerFeature
import com.alibaba.fastjson.support.config.FastJsonConfig
import org.springframework.context.annotation.Configuration
import org.springframework.http.converter.HttpMessageConverter
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter
import org.springframework.boot.SpringBootConfiguration
import org.springframework.http.MediaType
import org.springframework.web.servlet.config.annotation.EnableWebMvc
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter

@SpringBootConfiguration
@EnableWebMvc
open class WebMvcConfigFastJson : WebMvcConfigurerAdapter(){
    /**
     *  这里是kotlin的语法。java基本一样。
     */
    override fun extendMessageConverters(converters: MutableList<HttpMessageConverter<*>>) {
        super.extendMessageConverters(converters)
        //这里把springBoot依赖的jackson去掉。
        //如果没有其他包依赖jackson,也可以直接pom里把jackson去掉
        converters.removeIf({ httpMessageConverter -> httpMessageConverter is MappingJackson2HttpMessageConverter })

        val converter:FastJsonHttpMessageConverter  = FastJsonHttpMessageConverter()
        var config:FastJsonConfig =  FastJsonConfig()
        config.dateFormat = "yyyy-MM-dd HH:mm:ss"
        config.setSerializerFeatures(
                SerializerFeature.BrowserSecure
                ,SerializerFeature.WriteBigDecimalAsPlain
                ,SerializerFeature.WriteEnumUsingToString
                ,SerializerFeature.WriteDateUseDateFormat)
        //处理中文乱码问题
        var fastMediaTypes:ArrayList<MediaType> = ArrayList<MediaType>()
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8)
        converter.setSupportedMediaTypes(fastMediaTypes)
        converter.setFastJsonConfig(config)
        converters.add(converter)
    }
}

这里是pom.xml去掉jackson

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </exclusion>
    </exclusions>
</dependency>

然后就可以开心的使用的fastjson了

参阅:

  1. Spring Boot使用Gson替换Jackson【http://blog.gelu.me/2017/spring-boot-uses-gson-to-replace-jackson/】
  2. SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上)【http://blog.csdn.net/fw0124/article/details/48280083】
  3. spring boot(2)-@SpringBootApplication详解【http://blog.csdn.net/wangb_java/article/details/70943500?utm_source=itdadao&utm_medium=referral】

© 著作权归作者所有

共有 人打赏支持
ol_O_O_lo
粉丝 0
博文 24
码字总数 7659
作品 0
杭州
高级程序员
恒宇少年/spring-boot-chapter

简书整套文档以及源码解析 专题 专题名称 专题描述 001 Spring Boot 核心技术 讲解SpringBoot一些企业级层面的核心组件 002 Spring Cloud 核心技术 对Spring Cloud核心技术全面讲解 003 Quer...

恒宇少年
04/19
0
0
自定义jackson解析时间格式yyy-MM-dd HH:mm:ss

1、问题排查 出现的场景: 服务端通过springmvc写了一个对外的接口,返回一个json字符串,其中该json带有日期,格式为yyyy-MM-dd HH:mm:ss 客户端通过feign调用该http接口,指定返回值为一个...

落叶清风
08/08
0
0
SpringBoot,返回JSON,Long前端精准度丢失,Jackson自定义序列化规则

已经很久没写过springboot的相关博客了,前面一段时间一直在写clojure,导致基本很少关注springboot的一些情况,刚好最近在写一些小玩意,期间,遇到一些问题,然后整理了一下,避免其他小伙伴跟我遇...

贺小五
04/15
0
0
zhys513/scm-springboot

scm-springboot 基于spring boot的统一注解缓存,支持mencached、redis、ehcache的缓存无缝切换。支持单个缓存设置过期时间,灵活的key设置规则,采用fastjson序列化与反序列化,以json串存于...

zhys513
06/28
0
0
SpringBoot_总结_01_配置详解

一、入口类和@SpringBootApplication SpringBoot项目通常有一个名为*Application的入口类,入口方法为此类的main方法。 1. @SpringBootApplication @SpringBootApplication注解是一个组合注解...

shirayner
07/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据学习脑图以及入门教程!

近些年,大数据的火热可谓是技术人都知道啊,很多人呢,也想学习大数据相关,所以,这里分享几个大数据脑图,希望可以让你清楚明白从哪里入门大数据,知道该学习以及掌握哪些知识点; 大数据...

董黎明
12分钟前
0
0
聊聊redis的监控工具

序 本文主要研究一下redis的监控工具 redis-stat redis-stat是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info命令来统计,不影响redis性能。 docker运行 docker r...

go4it
15分钟前
0
0
TypeScript基础入门之高级类型的索引类型(Index types)

转发 TypeScript基础入门之高级类型的索引类型(Index types) 高级类型 索引类型(Index types) 使用索引类型,编译器就能够检查使用了动态属性名的代码。 例如,一个常见的JavaScript模式是从...

durban
33分钟前
0
0
利用碎片化时间Get Linux系统

起初,我做着一份与IT毫无关系的工作,每月领着可怜的工资,一直想改变现状,但无从下手,也就是大家熟知的迷茫。我相信,每一个人都会或多或少的经历过迷茫,迷茫每一个选择,迷茫工作或者生...

Linux就该这么学
今天
1
0
图像显示深入学习一:Activity启动过程

一个月左右写了图像显示深入学习之文章开篇文章表明了自己近期的计划,前半年重新学习了opengl es,c++以及Linux的一些知识,觉得是时候开始看图像这一块的源码了,边看边补缺补漏吧。 作为该...

JerryLin123
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部