问题描述
使用@SpringQueryMap可以解决GET请求的时候,传递对象。但是当使用子对象继承父类的时候会无法传递。
解决方案
- 解决办法,配置请求端的Fegin,加强SpringQueryMap解析。
@Configuration
public class FeignConfiguration {
@Bean
public Feign.Builder feignBuilder() {
return Feign.builder()
.queryMapEncoder(new BeanQueryMapEncoder())
.retryer(Retryer.NEVER_RETRY);
}
}
- 然后再使用Fegin加载该配置
@FeignClient(value = "test", configuration = FeignConfiguration.class)
总览
@Configuration
public class FeignClientCustomizerConfig {
/**
* 替换解析 queryMap 的类,实现父类中变量的映射
* @return
*/
@Bean
public Feign.Builder feignBuilder() {
return Feign.builder()
.queryMapEncoder(new BeanQueryMapEncoder());
}
}
/**
* 指定client添加配置类
*/
@FeignClient(value = "micro-service", configuration = FeignClientCustomizerConfig.class)
// 或者
/**
* 主类添加配置类
*/
@EnableFeignClients(defaultConfiguration = FeignClientCustomizerConfig.class)