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