feign,就这么简单

feign的使用

feign的介绍
  • JAVA 项目中接口调用怎么做 ?
    • Httpclient
    • Okhttp
    • Httpurlconnection
    • RestTemplate

而feign可以让我们更加简便的调用接口

Feign是一个声明式、模板化的Web Service客户端,它简化了开发者编写Web服务客户端的操作,开发者可以通过简单的接口和注解来调用HTTP API,使得开发变得更加简化、快捷。

Spring Cloud Feign也是基于Netflix Feign的二次开发,它整合了Ribbon和Hystrix,具有可插拔、基于注解、负载均衡、服务熔断等一系列的便捷功能,也就是说我们在实际开发中可以用Feign来取代Ribbon。

feign的使用
  • 引入依赖
    我的环境:jdk1.8 spring-boot2.31
 <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.2.2.RELEASE</version>
  </dependency>
  • main加注解@EnableFeignClients

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;


@EnableFeignClients
@SpringBootApplication
public class DemoApplication {

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

}

  • 创建feign接口类

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;



@FeignClient(name = "TestFeign" ,url = "localhost:8081")
public interface TestFeign {
    @GetMapping("/testFeign")
    Map test(@RequestParam("name") String name);
}


    • @FeignClient参数含义
      • name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现
      • url: url一般用于调试,可以手动指定@FeignClient调用的地址
        decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
      • configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract
      • fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
      • fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
      • path: 定义当前FeignClient的统一前缀
  • 调用的服务


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
public class TestController {

    @GetMapping("/testFeign")
    public Map test(@RequestParam("name") String name){
        Map<String, String> map = new HashMap<>();
        map.put("test",name);
        return map;
    }
}

  • 使用
 @Autowired
    private TestFeign testFeign;

    @Test
    public void test2111(){
        Map map = testFeign.test("测试一波");
        System.out.println(map);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值