feign调用过程
- SynchronousMethodHandler 执行 invoke 方法
- 构建 RequestTemplate 对象
- 解析 QueryMap 使用 queryMapEncoder.encode(value)
- QueryMapEncoder 实现类 FieldQueryMapEncoder 类
public Map<String, Object> encode(Object object) throws EncodeException {
try {
FieldQueryMapEncoder.ObjectParamMetadata metadata = this.getMetadata(object.getClass());
Map<String, Object> fieldNameToValue = new HashMap();
Iterator var4 = metadata.objectFields.iterator();
while(var4.hasNext()) {
Field field = (Field)var4.next();
Object value = field.get(object);
if (value != null && value != object) {
Param alias = (Param)field.getAnnotation(Param.class);
String name = alias != null ? alias.value() : field.getName();
fieldNameToValue.put(name, value);
}
}
return fieldNameToValue;
} catch (I