Spring Cloud Feign

一、Feign简介

Feign是一个声明式Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。Feign整合了Ribbon和Hystrix(关于Hystrix我们后面再讲),可以让我们不再需要显式地使用这两个组件。

总起来说,Feign具有如下特性:

  • 可插拔的注解支持,包括Feign注解和JAX-RS注解;
  • 支持可插拔的HTTP编码器和解码器;
  • 支持Hystrix和它的Fallback;
  • 支持Ribbon的负载均衡;
  • 支持HTTP请求和响应的压缩。

这看起来有点像SringMVC模式的Controller层的RequestMapping映射。Feign是用@FeignClient来映射服务的。

二、Feign使用

导入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

application.yml配置

server:
  port: 8081
spring:
  application:
    name: consumer                      #服务名
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8001/eureka   #注册进入eureka
    instance:
      instance-id: consumer_8081           #在注册中心的名字
      prefer-ip-address: true              #访问路径时显示ip地址

定义接口

@FeignClient("user-service")//value为注册到eureka服务器名称
public interface FeignService { 
    //服务中方法的映射路径
    @GetMapping("/users")
    List<User> list();

    @GetMapping("/user/{id}")
    User find(@PathVariable("id")Integer id) ;

    @PutMapping("/user/{id}")
    User update(User user);
}

接着在Controller层注入FeiService这个接口,进行远程服务调用

@RestController
public class ConsumerController {

    @Autowired
    FeignService feignService;

    @RequestMapping("/list")
    public String listUser(){
        return feignService.list();
    }
}

添加注解,主启动类上添加注解@EnableDiscoveryClient 和@EnableFeignClients

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {

    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class, args);
    }
}

转载于:https://my.oschina.net/u/4134962/blog/3074964

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值