SpringBoot添加自定义消息转换器

 

首先咱们须要明白一个概念:springboot中不少配置都是使用了条件注解进行判断一个配置或者引入的类是否在容器中存在,若是存在会如何,若是不存在会如何。spring

也就是说,有些配置会在springboot中有默认配置,前提是你没有配置,这样来起到简化配置做用。若是你配置了,容器就不会为你再去默认配置。json

配置消息转化器的两种方法:springboot

方法一:自定义消息转化器,只须要在@Configuration的类中添加消息转化器的@bean加入到Spring容器,就会被Spring Boot自动加入到容器中。ide

自定义字符串转换器:spa

1 //此方法位于一个有@Configuration注解的类中
2 @Bean
3     public StringHttpMessageConverter stringHttpMessageConverter(){
4         StringHttpMessageConverter converter  = new StringHttpMessageConverter(Charset.forName("UTF-8"));
5         return converter;
6 }

自定义fastjson转换器:code

 1 @Bean
 2 public HttpMessageConverters fastJsonHttpMessageConverters(){
 3     //1.须要定义一个convert转换消息的对象;
 4     FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
 5     //2:添加fastJson的配置信息;
 6     FastJsonConfig fastJsonConfig = new FastJsonConfig();
 7     fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
 8     //3处理中文乱码问题
 9     List<MediaType> fastMediaTypes = new ArrayList<>();
10     fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
11     //4.在convert中添加配置信息.
12     fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
13     fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
14     HttpMessageConverter<?> converter = fastJsonHttpMessageConverter;
15     return new HttpMessageConverters(converter);
16 
17 }

 

方法二:在继承WebMvcConfigurerAdapter的类中重写(覆盖)configureMessageConverters方法orm

自定义字符串转换器:对象

1     // 自定义消息转化器的第二种方法
2     @Override
3     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
4         StringHttpMessageConverter converter  = new StringHttpMessageConverter(Charset.forName("UTF-8"));
5         converters.add(converter);
6     }

自定义fastjson转换器:blog

 1     @Override
 2     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
 3         super.configureMessageConverters(converters);
 4         //1.须要定义一个convert转换消息的对象;
 5         FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
 6         //2.添加fastJson的配置信息,好比:是否要格式化返回的json数据;
 7         FastJsonConfig fastJsonConfig = new FastJsonConfig();
 8         fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
 9         //3处理中文乱码问题
10         List<MediaType> fastMediaTypes = new ArrayList<>();
11         fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
12         //4.在convert中添加配置信息.
13         fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
14         fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
15         //5.将convert添加到converters当中.
16         converters.add(fastJsonHttpMessageConverter);
17     }

 

思考题:继承

一、若是我将本文中全部提到的代码都写进项目中,那么此时容器中有几个消息转换器?

二、若是不配置文中的消息转换器,容器中有几个消息转换器?

 

 

有兴趣的能够留言你们讨论讨论,欢迎你们对本人行文过程当中的错误进行指出

相关文章
相关标签/搜索