SpringCloud Feign服务调用如何实现高效查询?

摘要:在上一章的学习中,我们知道了微服务的基本概念,知道怎么基于Ribbon+restTemplate的方式实现服务调用,接着上篇博客,我们学习怎么基于Feign实现服务调用,请先学习上篇博客,然后再学习本篇博客 Feign是一
在上一章的学习中,我们知道了微服务的基本概念,知道怎么基于Ribbon+restTemplate的方式实现服务调用,接着上篇博客,我们学习怎么基于Feign实现服务调用,请先学习上篇博客,然后再学习本篇博客 Feign是一个声明式的web service客户端,它使得编写web service客户端更为容易。创建接口,为接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。 环境准备: JDK 1.8 SpringBoot2.2.3 SpringCloud(Hoxton.SR6) Maven 3.2+ 开发工具 IntelliJ IDEA smartGit 创建一个SpringBoot Initialize项目,详情可以参考我之前博客:SpringBoot系列之快速创建项目教程 port: 8083 spring: application: name: feign-service-consumer eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ healthcheck: enabled: false instance: status-page-url-path: http://localhost:8761/actuator/info health-check-url-path: http://localhost:8761/actuator//health prefer-ip-address: true instance-id: feign-service-consumer8083 @FeignClient指定服务名称,@RequestMapping指定要调用的接口 package com.example.springcloud.client.service; import com.example.springcloud.client.bean.User; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * <pre> * UserService * </pre> * * <pre> * @author mazq * 修改记录 * 修改后版本: 修改人: 修改日期: 2020/07/28 13:09 修改内容: * </pre> */ @FeignClient(value = "EUREKA-SERVICE-PROVIDER") @Service public interface UserService { @RequestMapping(value = "/api/users/{username}",method = RequestMethod.GET) User findGithubUser(@PathVariable("username")String username); } 加上@EnableEurekaClient,@EnableFeignClients,写个接口进行测试 package com.example.springcloud.client; import com.example.springcloud.client.bean.User; import com.example.springcloud.client.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @EnableEurekaClient @EnableFeignClients @RestController public class SpringcloudFeignClientApplication { @Autowired UserService userService; public static void main(String[] args) { SpringApplication.run(SpringcloudFeignClientApplication.class, args); } @GetMapping("/findUser/{username}") public User index(@PathVariable("username")String username){ return userService.findGithubUser(username); } } 要运行eureka服务端,eureka服务提供者,代码请参考上一章博客 补充:IDEA中多实例运行方法 step1:如图,不要加上勾选 step2:指定不同的server端口和实例id,如图: 服务注册,可以看到两个实例 ok,启动eureka server(服务注册中心),eureka服务提供者端,和feign服务消费者端 http://localhost:8083/findUser/mojombo 附录: ok,本博客参考官方教程进行实践,仅仅作为入门的学习参考资料,详情可以参考Spring Cloud官方文档https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.2.0.RELEASE/reference/html/ 代码例子下载:code download 优质学习资料参考: 方志鹏大佬系列Spring Cloud博客:https://www.fangzhipeng.com/spring-cloud.html 使用Spring Cloud与Docker实战微服务:https://eacdy.gitbooks.io/spring-cloud-book/content/ 程序员DD大佬系列Spring Cloud博客:http://blog.didispace.com/spring-cloud-learning/