feign 序列化_Spring Cloud Feign 配置 FastJson

该博客介绍了如何在Spring Cloud Feign中配置FastJson作为序列化工具。通过创建`FeignClientConfig`类,定义`feignEncoder` Bean,使用`FastJsonHttpMessageConverter`并设置支持的MediaType及FastJsonConfig,实现Feign调用时的数据序列化。
摘要由CSDN通过智能技术生成

1import com.alibaba.fastjson.serializer.SerializerFeature;

2import com.alibaba.fastjson.support.config.FastJsonConfig;

3import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

4import feign.codec.Encoder;

5import org.springframework.beans.factory.ObjectFactory;

6import org.springframework.boot.autoconfigure.http.HttpMessageConverters;

7import org.springframework.cloud.openfeign.support.SpringEncoder;

8import org.springframework.context.annotation.Bean;

9import org.springframework.context.annotation.Configuration;

10import org.springframework.http.MediaType;

11import org.springframework.http.converter.HttpMessageConverter;

12

13import java.util.ArrayList;

14import java.util.List;

15

16/**17* @desc: feign配置18* @author: kangaroohy19* @create: 2020/03/2620*/

21@Configuration

22public class FeignClientConfig {

23

24 @Bean

25 public Encoder feignEncoder(){

26 return new SpringEncoder(feignHttpMessageConverter());

27 }

28

29 private ObjectFactory feignHttpMessageConverter() {

30 final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(createFastJsonConverter());

31 return () -> httpMessageConverters;

32 }

33

34 private HttpMessageConverter createFastJsonConverter(){

35 FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter();

36 List supportedMediaTypes = new ArrayList<>();

37 supportedMediaTypes.add(MediaType.APPLICATION_JSON);

38 supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);

39 supportedMediaTypes.add(MediaType.APPLICATION_ATOM_XML);

40 supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);

41 supportedMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);

42 supportedMediaTypes.add(MediaType.APPLICATION_PDF);

43 supportedMediaTypes.add(MediaType.APPLICATION_RSS_XML);

44 supportedMediaTypes.add(MediaType.APPLICATION_XHTML_XML);

45 supportedMediaTypes.add(MediaType.APPLICATION_XML);

46 supportedMediaTypes.add(MediaType.IMAGE_GIF);

47 supportedMediaTypes.add(MediaType.IMAGE_JPEG);

48 supportedMediaTypes.add(MediaType.IMAGE_PNG);

49 supportedMediaTypes.add(MediaType.TEXT_EVENT_STREAM);

50 supportedMediaTypes.add(MediaType.TEXT_HTML);

51 supportedMediaTypes.add(MediaType.TEXT_MARKDOWN);

52 supportedMediaTypes.add(MediaType.TEXT_PLAIN);

53 supportedMediaTypes.add(MediaType.TEXT_XML);

54 fastJsonConverter.setSupportedMediaTypes(supportedMediaTypes);

55

56 FastJsonConfig fastJsonConfig = new FastJsonConfig();

57 fastJsonConfig.setSerializerFeatures(

58 // 是否输出值为null的字段,默认为false59 SerializerFeature.WriteMapNullValue,

60 // 将Collection类型字段的字段空值输出为[]61 SerializerFeature.WriteNullListAsEmpty,

62 // 将字符串类型字段的空值输出为空字符串63 SerializerFeature.WriteNullStringAsEmpty,

64 // 将数值类型字段的空值输出为065 SerializerFeature.WriteNullNumberAsZero,

66 //Boolean字段如果为null,输出为false,而非null67 SerializerFeature.WriteNullBooleanAsFalse,

68 //SerializerFeature.WriteDateUseDateFormat,69 //枚举字段输出为枚举值70 SerializerFeature.WriteEnumUsingToString,

71 // 禁用循环引用72 SerializerFeature.DisableCircularReferenceDetect);

73

74 fastJsonConverter.setFastJsonConfig(fastJsonConfig);

75 return fastJsonConverter;

76 }

77}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值