Spring Cloud中, 服务又该如何调用 ?
各个服务以HTTP接口形式暴露 , 各个服务底层以HTTP Client的方式进行互相访问。
SpringCloud开发中,Feign是最方便,最为优雅的服务调用实现方式。
Feign 是一个声明式,模板化的HTTP客户端,可以做到用HTTP请求访问远程服务就像调用本地方法一样。简单搭建步骤如下 :
1. 首先加入pom.xml
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>2. 主类上面添加注解@EnableFeignClients,该注解表示当程序启动时,会进行包扫描,默认扫描所有带@FeignClient注解的类进行处理
package name.ealen; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.feign.EnableFeignClients; /** * Created by EalenXie on 2018/10/12 18:24. */ @SpringBootApplication @EnableFeignClients @EnableDiscoveryClient public class FeignOpenClientApplication { public static void main(String[] args) { SpringApplication.run(FeignOpenClientApplication.class,args); } }3. 简单配置appliation.yml 注册到Eureka Server。
server: port: 8090 spring: application: name: spring-cloud-feign-openClient eureka: client: service-url: defaultZone: http://localhost:8761/eureka/4. 使用@FeignClient为本应用声明一个简单的能调用的客户端。为了方便,找个现成的开放接口,比如Github开放的api,GET /search/repositories。
GitHub接口文档 : https://developer.github.com/v3/search/#search-repositories
package name.ealen.client; import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; /** * Created by EalenXie on 2019/1/9 11:28. */ @FeignClient(name = "github-client", url = "https://api.github.com"
