服务B 经过Feign 能够正常调通 服务A
网关Gateway却不能经过Feign调通服务Ajava
/** * Feign 配置 * @author: itdragons * @time: 2020/4/29 5:14 下午 */ @Configuration public class FeignConfig { @Bean Logger.Level feignLevel() { //这里记录全部 return Logger.Level.FULL; }
feign.codec.DecodeException: No qualifying bean of type 'org.springframework.boot.autoconfigure.http.HttpMessageConverters' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at feign.SynchronousMethodHandler.decode(SynchronousMethodHandler.java:187) at feign.SynchronousMethodHandler.executeAndDecode(SynchronousMethodHandler.java:147) at feign.SynchronousMethodHandler.invoke(SynchronousMethodHandler.java:80) at feign.hystrix.HystrixInvocationHandler$1.run(HystrixInvocationHandler.java:109)
经过日志可见HttpMessageConverters注入失败。web
import feign.Logger; 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; /** * Feign 配置 * @author: itdragons * @time: 2020/4/29 5:14 下午 */ @Configuration public class FeignConfig { @Bean Logger.Level feignLevel() { return Logger.Level.FULL; } @Bean public Decoder feignDecoder() { return new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter())); } public ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() { final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(new PhpMappingJackson2HttpMessageConverter()); return new ObjectFactory<HttpMessageConverters>() { @Override public HttpMessageConverters getObject() throws BeansException { return httpMessageConverters; } }; } public class PhpMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter { PhpMappingJackson2HttpMessageConverter(){ List<MediaType> mediaTypes = new ArrayList<>(); mediaTypes.add(MediaType.valueOf(MediaType.TEXT_HTML_VALUE + ";charset=UTF-8")); setSupportedMediaTypes(mediaTypes); } } }
参考:https://www.jianshu.com/p/5461eb5386a8spring