package com.doumee.config; 
 | 
import feign.codec.Decoder; 
 | 
import org.springframework.beans.BeansException; 
 | 
import org.springframework.beans.factory.ObjectFactory; 
 | 
import org.springframework.boot.autoconfigure.http.HttpMessageConverters; 
 | 
import org.springframework.cloud.openfeign.support.ResponseEntityDecoder; 
 | 
import org.springframework.cloud.openfeign.support.SpringDecoder; 
 | 
import org.springframework.context.annotation.Bean; 
 | 
import org.springframework.context.annotation.Configuration; 
 | 
import org.springframework.http.MediaType; 
 | 
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * Author: lizhi 
 | 
 * Date: 2022-02-17 
 | 
 * Describe: 解决 HttpMessageConverters Bean未注册问题 
 | 
 */ 
 | 
@Configuration 
 | 
public class DecoderConfig { 
 | 
  
 | 
    @Bean 
 | 
    public Decoder feignDecoder() { 
 | 
        return new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter())); 
 | 
    } 
 | 
  
 | 
    public ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() { 
 | 
        final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(new GateWayMappingJackson2HttpMessageConverter()); 
 | 
        return new ObjectFactory<HttpMessageConverters>() { 
 | 
            @Override 
 | 
            public HttpMessageConverters getObject() throws BeansException { 
 | 
                return httpMessageConverters; 
 | 
            } 
 | 
        }; 
 | 
    } 
 | 
  
 | 
    public class GateWayMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { 
 | 
        GateWayMappingJackson2HttpMessageConverter(){ 
 | 
            List<MediaType> mediaTypes = new ArrayList<>(); 
 | 
            mediaTypes.add(MediaType.valueOf(MediaType.TEXT_HTML_VALUE + ";charset=UTF-8")); 
 | 
            setSupportedMediaTypes(mediaTypes); 
 | 
        } 
 | 
    } 
 | 
} 
 |