其他分享
首页 > 其他分享> > SpringCloud - OpenFeign 组件

SpringCloud - OpenFeign 组件

作者:互联网

Feign 介绍

Feign 是 Netflix 公司发布的一种实现负载均衡和服务调用的开源组件。Spring Cloud 将其与 Netflix 中的其他开源服务组件 Eureka、Ribbon 以及 Hystrix 等,一起整合进 Spring Cloud Netflix 模块中,整合后全称为 Spring Cloud Netflix Feign。Feign 是一种声明式服务调用组件,它在 RestTemplate 的基础上做了进一步的封装。通过 Feign,我们只需要声明一个接口并通过注解进行简单的配置,即可实现对 HTTP 接口的绑定。

OpenFeign 介绍

OpenFeign 全称 Spring Cloud OpenFeign,它是 Spring 官方推出的一种声明式服务调用与负载均衡组件,它的出现就是为了替代进入停更维护状态的 Feign。

Feign VS OpenFeign

相同点

1、Feign 和 OpenFeign 都是 Spring Cloud 下的远程调用和负载均衡组件。
2、Feign 和 OpenFeign 都对 Ribbon 进行了集成,都利用 Ribbon 维护了可用服务清单实现了客户端的负载均衡。
3、Feign 和 OpenFeign 都是在服务客户端定义服务绑定接口并通过注解的方式实现远程服务的调用。

不同点

1、Feign 和 OpenFeign 的依赖项不同。
2、Feign 和 OpenFeign 支持的注解不同,OpenFeign 除了支持 Feign 注解和 JAX-RS 注解外,还支持 Spring MVC 注解。

OpenFeign 实现

pom

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

yml

server:
  port: 80
eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
    fetch-registry: true

启动类

@SpringBootApplication
@EnableFeignClients 
public class MicroServiceCloudConsumerDeptFeignApplication {
    public static void main(String[] args) {
        SpringApplication.run(MicroServiceCloudConsumerDeptFeignApplication.class, args);
    }
}

定义调用接口

@Component
// 服务提供者提供的服务名称,即 application.name
@FeignClient(value = "provider-service")
public interface DeptFeignService {
    @RequestMapping(value = "/dept/get/{id}", method = RequestMethod.GET)
    public Dept get(@PathVariable("id") int id);
    
    @RequestMapping(value = "/dept/list", method = RequestMethod.GET)
    public List<Dept> list();
}

标签:Feign,OpenFeign,SpringCloud,Spring,组件,注解,public,Cloud
来源: https://www.cnblogs.com/feiqiangsheng/p/16285006.html