gateway在写全局filter的时候,继承GlobalFilter,调用feign接口报错。原因是在gateway项目创建的时候,不会创建HttpMessageConverters实例。所以需要建立一个手动放入bean容器里
@Configuration
public class FeignConfig {
@Bean
public Request.Options feignOptions(){
return new Request.Options();
}
@Bean
public Encoder feignEncoder() {
return new SpringEncoder(feignHttpMessageConverter());
}
@Bean
public Decoder feignDecoder() {
return new OptionalDecoder(
new ResponseEntityDecoder(new SpringDecoder(feignHttpMessageConverter())));
}
public ObjectFactory feignHttpMessageConverter() {
return () -> {
return new HttpMessageConverters(new MappingJackson2HttpMessageConverter());
};
}
}
这样程序会启动成功。
因为gateway在filter过滤的时候,回大量运用异步,所以你正常调用会出现问题,回报错
所以你要异步运行调用feign。
CompletableFuturefuture1 = CompletableFuture.supplyAsync(()->{ return Login.login(); });
这样就可以了。



