RestTemplat
e方式,FeginClient
也是一种模块间方法调用的方式。在 Spring Cloud Feign
的实现下, 我们只需创建 一 个接口并用注解(@FeignClient
)的方式来配置它, 即可完成对服务提供方的接口绑定,简化了在使用 Spring Cloud Ribbon
时自行封装服务调用客户端的开发量。 调用的方法所涉及的服务必须在Eurake
中注册。<!-- FeginClent-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
@EnableFeignClients
public class CoreApplication {
public static void main(String[] args) {
SpringApplication.run(CoreApplication.class, args);
}
}
@FeginClent()
参数说明
name
:指定FeignClient
的名称,eurake
中注册的名称url
: url
一般用于调试,可以手动指定@FeignClient
调用的地址decode404
:当发生http 404
错误时,如果该字段位true
,会调用decoder
进行解码,否则抛出FeignException
configuration
: Feign
配置类,可以自定义Feign
的Encoder
、Decoder
、LogLevel
、Contract
fallbackFactory
: 工厂类,用于生成fallback
类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码path
: 定义当前FeignClient
的统一前缀@FeignClient(name = "osback")
public interface FeginClientTest {
@RequestMapping("/backtest/test3")
Map<String,String> getTest(@RequestBody Map<String,String> map);
}
@RequestMapping("/backtest")
@RestController
public class TestController extends BaseController {
@RequestMapping("/test3")
public Map<String,String> getTest(@RequestBody Map<String,String> map){
return map;
}
}
@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
的接口调用地址,进行方法的调用。