SpringCloud中Feign的使用流程

发布时间 2023-06-19 20:17:15作者: 有点儿意思

①:添加依赖(服务调用方)

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

②:是否需要覆盖默认配置(比如使Feign的熔断机制生效)

feign:
  hystrix:
    enabled: true # 开启Feign的熔断功能

③:在启动类上添加注解

@EnableFeignClients   //开启Feign功能

④:编写Fiegn的客户端(以下都是以Feign的熔断机制为例)

//声明这是一个Feign客户端,类似`@Mapper`注解。同时通过`value`属性指定服务名称
//fallback 属性为熔断策略的实现类。熔断策略实现类应实现 Feign 客户端接口,并提供处理熔断逻辑的方法。
@FeignClient(value = "service-provider",fallback = UserFeignClientFallback.class)
public interface UserFeignClient {
    //把Controller中对应的方法声明放在这里
    @GetMapping("/provider/findById/{id}")
     User findById(@PathVariable Integer id);
}

⑤:编写熔断策略(其实就是Fiegn的客户端的一个实现类,实现具体的降级逻辑)

@Component
public class UserFeignClientFallback implements UserFeignClient{
    //这里编写的是接口方法中的具体的降级逻辑
    @Override
    public User findById(Integer id) {
        User user = new User();
        user.setUsername("系统繁忙,请稍后再试");
        return user;
    }
}

⑥:Controller层注入并进行调用

@RestController
@RequestMapping("/consumer")
public class UserController {
    @Autowired
    UserFeignClient userFeignClient;
    public String findById(@PathVariable Integer id){
        User user = userFeignClient.findById(id);
        System.out.println(user);
        return user.toString();
    }
}