SpringCloud Feign 详解 快速上手

SpringCloud Feign 新手入门快速上手

在微服务框架SpringCloud中,Feign是其中非常重要且常用的组件。Feign是声明式,模板化的HTTP客户端,可以帮助我们更方便快捷调用HTTP API。
比httpClient简便很多,代码量也减少很多。

1.引入Feign
pom依赖包

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-feign</artifactId>
            <version>1.4.7.RELEASE</version>
</dependency>

启动类Application增加注解

@SpringBootApplication(scanBasePackages = {"com.xiaoqiang.feigncomsumer"})
@EnableFeignClients(basePackages = {"com.xiaoqiang.feigncomsumer"})
@EnableEurekaClient
public class FeigncomsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(FeigncomsumerApplication.class, args);
    }

}

接口类配置

1.调用第三方接口

@FeignClient(name = "test", url = "https://test.cn")
public interface FeignService {
 
    @RequestMapping(method = RequestMethod.POST, value = "/user/auth",consumes = "application/x-www-form-urlencoded;charset=UTF-8")
    String ssoCheck(String token);
}

2.调用自己eureka上的服务,记得启动本地注册到注册中心

eureka:
	enable:true
@FeignClient(value="被调用方的服务名")
public interface UserAuthService {
    @RequestMapping(method = RequestMethod.GET, value = "/user/auth")
    String userAuth(@RequestParam(name="ticket") String ticket);
}
 
 
@RestController
public class UserAuthController {
 
    @Autowired
    UserAuthService userAuthService ;
 
    @GetMapping("/user/auth")
    public Result userAuth(String ticket){
        String rs = userAuthService.userAuth(ticket);
        return Result.ok(rs);
    }
}

2.Fallback配置
FallBack类
这里有一点需要注意的是@RequestMapping中的value,也就是url,不能与接口类中的url一样。因为一个URL不能映射到两个方法上。

@Component
@RequestMapping("fallback/")
public class  FallBackStudentClient implements StudentOtherClient {

    @Override
    public Student getStudent(String name) {
        Student student = new Student();
        student.setAge(0);
        student.setName("fall back test");
        return student;
    }
}

接口类

在@FeignClient注解的参数指定Fallback类,且需要@Component注解。

@Component
@FeignClient(name = "${feign.provider}",path = "/feignprovider"
        ,fallback = FallBackStudentClient.class)
public interface StudentOtherClient {
    @GetMapping("/stud/getStudent")
    Student getStudent(@RequestParam(required = false, name = "name") String name);
}

打开Hystrix熔断功能

在bootstrap.yml中增加Hystrix配置。其中Hystrix的默认time-out时间为1s。

feign:
  name: MFRAMEWORK-PROVIDER
  provider: feignprovider
##开启Hystrix断路器
  hystrix:
    enabled: true

注:多个接口上的@FeignClient(“相同服务名”)会报错,overriding is disabled。
解决:

在application.yml中配置:

spring
	main:  allow-bean-definition-overriding: true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值