Spring Boot (Web 篇):集成Fastjson

版权声明:本博客所有内容采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可 https://blog.csdn.net/Soinice/article/details/82660988

目录

说在前面

Fastjson目标

在pom.xml加入相关依赖

整合 Fastjson

配置管理类WebMvcConfigurer

编程式配置

实体类Customer

控制器类IndexController

@ResponseBody

页面访问

其中处理编码问题这里提供两种方式

1)对FastJsonConfig进行修改

2)对FastJsonHttpMessageConverter进行修改

其中处理日期(时间)问题这里提供两种方式

1)对FastJsonConfig进行修改

2)对Customer实体类进行修改

总结

源码下载


说在前面

Fastjson是一个Java库,可用于将Java对象转换为其JSON表示。它还可用于将JSON字符串转换为等效的Java对象。Fastjson可以处理任意Java对象,包括您没有源代码的预先存在的对象。

Fastjson目标

  • 在服务器端和Android客户端提供最佳性能
  • 提供简单的toJSONString()和parseObject()方法,将Java对象转换为JSON,反之亦然
  • 允许将预先存在的不可修改对象转换为JSON和从JSON转换
  • 广泛支持Java Generics
  • 允许对象的自定义表示
  • 支持任意复杂的对象(具有深层继承层次结构和泛型类型的广泛使用)

在pom.xml加入相关依赖

整合 Fastjson

配置管理类WebMvcConfigurer

编程式配置

如果是使用编程的方式(通常是基于 Spring Boot 项目)配置 Spring MVC 的话只需继承 WebMvcConfigurerAdapter 覆写 configureMessageConverters 方法即可,就像下面这样。

注:如果你使用的 Fastjson 版本小于1.2.36的话(强烈建议使用最新版本),在与Spring MVC 4.X 版本集成时需使用 FastJsonHttpMessageConverter4

注2:SpringBoot 2.0.1版本中加载WebMvcConfigurer的顺序发生了变动,故需使用converters.add(0, converter);指定FastJsonHttpMessageConverter在converters内的顺序,否则在SpringBoot 2.0.1及之后的版本中将优先使用Jackson处理。详情:WebMvcConfigurer is overridden by WebMvcAutoConfiguration #12389

参考:Spring Framework 官方文档 Message Converters 部分, 点我查看

实体类Customer

此处采用 lombok 方式,@Data注解:注解在类上使用,提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

控制器类IndexController

务必 加上 @ResponseBody,亦或者直接在 Controller 上采用 @RestController注解

@ResponseBody

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。 
作用: 
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。 
使用时机: 
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

页面访问

在浏览器直接输入:http://localhost:8080/index/helloFastJson

其中处理编码问题这里提供两种方式

默认如果不处理,会显示:

1)对FastJsonConfig进行修改

看一下源代码,默认为 UTF-8:

在配置管理类中WebMvcConfig中configureMessageConverters方法 配置 FastJsonConfig

此时返回页面json中 中文依然存在乱码,需要配置 application.properties

把 spring.http.encoding.force 改为 true

可以看到他的源码是 Boolean,也就是默认值为 false,所以打开这个就ok了。

2)对FastJsonHttpMessageConverter进行修改

两种方式处理完,处理结果为:

当然,个人建议采用一种,只需要修改application.properties配置即可,因为默认就是UTF-8。

其中处理日期(时间)问题这里提供两种方式

默认如果不处理,会显示:

1)对FastJsonConfig进行修改

结果为:

2)对Customer实体类进行修改

这里采用注解形式

结果为:

同样,根据需求不同选择不同,第一种是全局,第二种为单独处理。

当然,如果同时写入,FastJsonConfig > @JSONField

至此为止,SpringBoot集成FastJson就算完成了。

总结

如果你使用 Spring MVC 来构建 Web 应用并对性能有较高的要求的话,可以使用 Fastjson 提供的FastJsonHttpMessageConverter 来替换 Spring MVC 默认的 HttpMessageConverter 以提高 @RestController @ResponseBody @RequestBody 注解的 JSON序列化速度。下面是配置方式,非常简单。

源码下载

[相关示例完整代码]请获取 相关分支哦:feature-20180910-web 

猜你喜欢

转载自blog.csdn.net/Soinice/article/details/82660988
今日推荐