SpringCloud之Feign

一、Feign简介

Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。

1.1、Feign的简介

二、Feign的快速入门

2.1、导入依赖

        <!--引入feign的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2.2、启动类上添加注解

@EnableFeignClients

2.3、编写接口,使用Feign,告诉器请求参数,请求方式,返回参数,请求路径

package cn.waggag.client;

import cn.waggag.domain.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @description:
 * @author: waggag
 * @time: 2019/7/28 11:36
 * @Company http://www.waggag.cn
 */
//指定服务,到指定的服务访问
@FeignClient("user-service")
public interface UserClient {

    @GetMapping("user/{id}")
    User queryById(@PathVariable("id") int id);
}

2.4、在Controller中使用

    @Autowired
    private UserClient userClient;
    
    @GetMapping("{id}")
    public User queryById(@PathVariable("id")int id){
        return userClient.queryById(id);
    }

2.5、Feign的配置

#开启Feign的Hystrix熔断
feign:
  hystrix:
    enabled: true
#Feign的默认Ribbon(负载均衡)的设置
ribbon:
  ConnectionTimeOut: 500
  ReadTimeOut: 2000

2.6、Feign的熔断配置,配置接口的实现类。

package cn.waggag.client;

import cn.waggag.domain.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @description:
 * @author: waggag
 * @time: 2019/7/28 11:36
 * @Company http://www.waggag.cn
 */
@FeignClient(value = "user-service",fallback = UserClientImpl.class)
public interface UserClient {

    @GetMapping("user/{id}")
    User queryById(@PathVariable("id") int id);
}

2.7、熔断类的实现,编写熔断逻辑

package cn.waggag.client;

import cn.waggag.domain.User;
import org.springframework.stereotype.Component;

/**
 * @description:
 * @author: waggag
 * @time: 2019/7/28 11:57
 * @Company http://www.waggag.cn
 */
@Component
public class UserClientImpl implements UserClient {
    @Override
    public User queryById(int id) {
        User user = new User();
        user.setUsername("Feign的熔断测试");
        return user;
    }
}

2.8、Feign中包含Ribbon和Hystrix,可以直接在Feign中进行配置。

posted @ 2019-07-28 12:06  王港  阅读(104)  评论(0)    收藏  举报