SpringBoot添加⾃定义消息转换器
⾸先我们需要明⽩⼀个概念:springboot中很多配置都是使⽤了条件注解进⾏判断⼀个配置或者引⼊的类是否在容器中存在,如果存在会如何,如果不存在会如何。
也就是说,有些配置会在springboot中有默认配置,前提是你没有配置,这样来起到简化配置作⽤。如果你配置了,容器就不会为你再去默认配置。
配置消息转化器的两种⽅法:
⽅法⼀:⾃定义消息转化器,只需要在@Configuration的类中添加消息转化器的@bean加⼊到Spring容器,就会被Spring Boot⾃动加⼊到容器中。
⾃定义字符串转换器:
1//此⽅法位于⼀个有@Configuration注解的类中
2 @Bean
3public StringHttpMessageConverter stringHttpMessageConverter(){
4        StringHttpMessageConverter converter  = new StringHttpMessageConverter(Charset.forName("UTF-8"));
5return converter;
6 }
⾃定义fastjson转换器:
1 @Bean
2public 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);
springboot中文11//4.在convert中添加配置信息.
12    fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
13    fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
14    HttpMessageConverter<?> converter = fastJsonHttpMessageConverter;
15return new HttpMessageConverters(converter);
16
17 }
⽅法⼆:在继承WebMvcConfigurerAdapter的类中重写(覆盖)configureMessageConverters⽅法
⾃定义字符串转换器:
1// ⾃定义消息转化器的第⼆种⽅法
2    @Override
3public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
4        StringHttpMessageConverter converter  = new StringHttpMessageConverter(Charset.forName("UTF-8"));
5        converters.add(converter);
6    }
⾃定义fastjson转换器:
1    @Override
2public void configureMessageConverters(List<HttpMessageConverter<?>> 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    }
思考题:
1、如果我将本⽂中所有提到的代码都写进项⽬中,那么此时容器中有⼏个消息转换器?
2、如果不配置⽂中的消息转换器,容器中有⼏个消息转换器?
有兴趣的可以留⾔⼤家讨论讨论,欢迎⼤家对本⼈⾏⽂过程中的错误进⾏指出

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。