一:Feign的使用
1.Feign代理接口:
@FeignClient(name = ServiceInstaceList.TEST_SWAGGER)
public interface PersonClient {
@GetMapping("/person/list/{address}")
QueryResponseResult<Person> findPersonsByAddress(@PathVariable("address") String address);
}
2.类中调用:
@Service
public class TestService {
@Autowired
PersonClient personClient;
public QueryResponseResult<Person> getPersonList(String address){
return personClient.findPersonsByAddress(address);
}
}
二:原理
Feign 通过给我们定义的目标接口生成一个 HardCodedTarget 类型的代理对象,由 JDK 动态代理实现,然后进行HTTP调用
三:协议和数据封装格式
基于HTTP协议实现的(伪RPC), 应用层往下封装数据,是JSON格式的
HTTP调用过程理解:应用层往下封装数据,是JSON格式的,然后按行拼接地序列化,然后三次握手建立长连接,然后发起请求。