微服务模块之间接口调用方式(FeginClient)
FeginClient描述
- 在微服务架构的项目开发中,模块之间调用方法,除了之前的
RestTemplat
e方式,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
配置类,可以自定义Feign
的Encoder
、Decoder
、LogLevel
、Contract
- 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
的接口调用地址,进行方法的调用。 - 反正用着就是简单。