原文链接:https://blog.csdn.net/shunhua19881987/article/details/75481903
(1)微服务客户端调用服务提供者提供接口实现方式:
JDK原生的URLConnection
Apache的Http Client
Netty的异步HTTP Client
Spring的RestTemplate
Feign
其中,用起来最方便、最优雅的还是要属Feign了。
(2)Feign实现步骤:
a)在pom.xml引入jar包:
<!--feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.3.1.RELEASE</version>
</dependency>
b)在启动类中添加feign注解@EnableFeignClients:
c)在service方法中添加“@FeignClinet(“service-provider-name”)”注解,如下图所示;
接口中方法的请求方式(GET/POST)跟接口的保持一致。
注意:
l @GetMapping注解不支持;
l @PathVariable注解需要设置value值;
l @RequestParam注解需要设置value值;
l 接口参数是复杂的JAVA对象的时候,需要采用POST方式请求,
且参数名前需要添加@RequestBody注解,且需要保证接口提供者的接口访问方式是POST;
l 客户端的调用接口的FeignClient接口中,方法名、参数名及参数类型必须和接口方法保持一致;参数名前必须添加@PathVariable或者@RequestParam注解。
l FeignClient注解中没有写其他值,则name值只得是服务提供者的服务名称;如果定义了url,则feignClient会查找对应url上的微服务,
name此时的值是指feignClient的名称。name值必须填写,还可以设置其他的值,如configuration(feignClient配置:默认是SpringMvcContract)的值;
l 多个feignCLient类中@FeignClient注解中的name值不能重复,url可以重复;
l 服务提供者的接口参数可以写在请求路径中,也可不写在请求路径中。
d)在Controller方法中引入写好的feignClient接口中的实现方法,即可正常调用远程的接口方法。
(3)参照网址:
http://blog.csdn.net/neosmith/article/details/52449921