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     }

 

思考題:繼承

一、若是我將本文中全部提到的代碼都寫進項目中,那麼此時容器中有幾個消息轉換器?

二、若是不配置文中的消息轉換器,容器中有幾個消息轉換器?

 

 

有興趣的能夠留言你們討論討論,歡迎你們對本人行文過程當中的錯誤進行指出

相關文章
相關標籤/搜索