# 微服务模块之间接口调用方式(FeginClient)

濮阳靖
2023-12-01

微服务模块之间接口调用方式(FeginClient)

FeginClient描述
  • 在微服务架构的项目开发中,模块之间调用方法,除了之前的RestTemplate方式,FeginClient也是一种模块间方法调用的方式。在 Spring Cloud Feign 的实现下, 我们只需创建 一 个接口并用注解(@FeignClient)的方式来配置它, 即可完成对服务提供方的接口绑定,简化了在使用 Spring Cloud Ribbon 时自行封装服务调用客户端的开发量。 调用的方法所涉及的服务必须在Eurake中注册。
引入Maven依赖
<!-- FeginClent-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
启动类开启FeginClent
@EnableFeignClients
public class CoreApplication {
    public static void main(String[] args) {
        SpringApplication.run(CoreApplication.class, args);
    }
}
编写FeginClecnt方法调用的接口

@FeginClent()参数说明

  • name:指定FeignClient的名称,eurake中注册的名称
  • url: url一般用于调试,可以手动指定@FeignClient调用的地址
  • decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException
    - configuration: Feign配置类,可以自定义FeignEncoderDecoderLogLevelContract
  • fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
  • fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
  • path: 定义当前FeignClient的统一前缀
@FeignClient(name = "osback")
public interface FeginClientTest {

    @RequestMapping("/backtest/test3")
    Map<String,String> getTest(@RequestBody Map<String,String> map);

}
需要调用的接口是OsBack模块中的如下的方法
@RequestMapping("/backtest")
@RestController
public class TestController extends BaseController {
    
    @RequestMapping("/test3")
    public Map<String,String> getTest(@RequestBody Map<String,String> map){
        return map;
    }

}
注入定义的FeginClent调用方法
@RestController
@RequestMapping("/test")
public class TestCoreController {

    @Autowired
    FeginClientTest feginClientTest;


    @RequestMapping("/test2")
    public Map<String,String> test2(){
        Map<String,String> map=new HashMap<>();
        map.put("test1","test");
        map.put("test2","test2");
        Map<String, String> test = feginClientTest.getTest(map);
        return test;
    }

}
需要注意的是
  • FeginClent中接收的格式需要和调用方法所返回的格式保持一致。
  • 测试的过程中,可以通过填写Url参数进行制定FeginClent的接口调用地址,进行方法的调用。
  • 反正用着就是简单。

代码完整地址 https://gitee.com/Marlon_Brando/back.git

 类似资料: