Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
1、在之前的项目中对服务调用者加入feign依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency>
@SpringBootApplication @EnableEurekaClient @EnableFeignClients public class EurekaInvocationApplication { public static void main(String[] args) { SpringApplication.run(EurekaInvocationApplication.class, args); } }
3、编写服务调用接口 @FeignClient(value = "eureka-service") 为服务提供者的实例名
@FeignClient(value = "eureka-service") public interface IService { /** * spring的注解翻译器,会把@GetMapping()翻译给feign框架 * 在feign整合到springcloud后就要用spring的注解,原feign的注解就不能使用了 * 这里的@PathVariable(value = "id")一定要带上value,否则会报错 * @return */ @GetMapping(value = "/getUser/{id}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) String getUser(@PathVariable(value = "id") Integer id); }
4、编写Controller接口,将feign接口注入到Controller
@Autowired private IService iService; /** * feign 调用服务提供者接口 * @param id * @return */ @GetMapping(value = "/getUserFeign/{id}", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public String getUserFeign(@PathVariable(value = "id") Integer id) { return iService.getUser(id); }