用的是spring-cloud-openfeign 没有GsonEncoder 这个类
时间: 2024-03-14 13:45:27 浏览: 110
如果你使用的是 Spring Cloud OpenFeign,那么你可以通过添加 `spring-cloud-starter-openfeign` 依赖来使用 Feign。在使用 Feign 进行 HTTP 调用时,Spring Cloud OpenFeign 默认使用的是 Jackson 库进行序列化和反序列化 JSON 数据,而不是 Gson。
如果你希望使用 Gson 序列化和反序列化 JSON 数据,可以在 Feign 的配置类中添加一个名为 `gson` 的 Bean,并且在 `FeignClientsConfiguration` 中将该 Bean 注入到默认的 Encoder 和 Decoder 中,如下所示:
```java
@Configuration
public class FeignConfig {
@Bean
public Gson gson() {
return new GsonBuilder()
.setDateFormat("yyyy-MM-dd HH:mm:ss")
.create();
}
}
@Configuration(proxyBeanMethods = false)
public class FeignClientsConfiguration {
// 将 Gson 注入到 Feign 的 Encoder 和 Decoder 中
@Autowired(required = false)
private List<Encoder> encoders = Collections.emptyList();
@Autowired(required = false)
private List<Decoder> decoders = Collections.emptyList();
@Autowired(required = false)
private Logger logger;
@Bean
public Encoder feignEncoder() {
Stream<Encoder> stream = this.encoders.stream();
return new SpringEncoder(() -> stream.collect(Collectors.toList()), gson());
}
@Bean
public Decoder feignDecoder() {
Stream<Decoder> stream = this.decoders.stream();
return new ResponseEntityDecoder(new SpringDecoder(() -> stream.collect(Collectors.toList()), gson()));
}
}
```
这样就可以使用 Gson 进行序列化了。
阅读全文