SpringCloud OpenFeign
文章目录
- SpringCloud OpenFeign
- 1 OpenFeign介绍
- 2 OpenFeign-应用实例
- 3 OpenFeign 测试
 
 
1 OpenFeign介绍
-  OpenFeign 是个声明式 WebService 客户端,使用 OpenFeign 让编写 Web Service 客户端 
 更简单
-  它的使用方法是定义一个服务接口然后在上面添加注解 
-  OpenFeign 也支持可拔插式的编码器和解码器。 
-  Spring Cloud 对 OpenFeign 进 行 了 封 装 使 其 支 持 了 Spring MVC 标 准 注 解 和 
 HttpMessageConverters
-  OpenFeign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡 
2 OpenFeign-应用实例

方案1:Ribbon+RestTemplate 返回的是拼接url
public class MemberConsumerController {
	public static final String MEMBER_SERVICE_PROVIDER_URL =
            "http://MEMBER-SERVICE-PROVIDER";
    @Resource
    private RestTemplate restTemplate;
    @GetMapping("/member/consumer/get/{id}")
    public Result<Member> queryMemberById(@PathVariable("id") Long id) {
        return restTemplate.getForObject
                (MEMBER_SERVICE_PROVIDER_URL + "/member/get/" + id, Result.class);
    }
    
}
方案2:OpenFeign 返回 - -》调用业务层 --》调用eureka-server方法
- queryMemberByid方法名可以修改,但必须和eureka-server的方法一致
- GetMaping 路径必须一致,因为接口调用实际上用的还是eureka-server上的接口
@Component
//这里 MEMBER-SERVICE-PROVIDER 就是 Eureka Server服务提供方注册的名称
@FeignClient(value = "MEMBER-SERVICE-PROVIDER")
public interface MemberFeignService {
    /**
     * 1. 远程调用的方式为 get
     * 2. 远程调用的 url 为 http://MEMBER-SERVICE-PROVIDER/member/get/{id}
     * 3. MEMBER-SERVICE-PROVIDER 是注册中心服务
     *
     *  member-service-provider:10000/10002
     *  4. 会根据 OpenFeign的均衡算法来决定是调用 10000还是10002
     */
    @GetMapping("/member/get/{id}")
    public Result queryMemberById(@PathVariable("id") Long id);
}
- 装配业务层 - -》 直接调用返回
@RestController
public class MemberConsumerFeignController {
    @Resource
    private MemberFeignService memberFeignService;
    @GetMapping("/member/consumer/openfeign/get/{id}")
    public Result<Member> queryMemberById(@PathVariable("id") Long id){
        return memberFeignService.queryMemberById(id);
    }
}
3 OpenFeign 测试
- 浏览器输入 : http://localhost/member/consumer/openfeign/get/1
- 观察访问的 10000/10002





















