(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

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐