当前位置:
首页 >
Spring Cloud Feign的原理及基本使用
发布时间:2023/12/29
36
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Spring Cloud Feign的原理及基本使用
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
- 了解Feign的作用
- 掌握Feign的使用过程
- 掌握Feign的负载均衡配置
- 掌握Feign的熔断配置
- 掌握Feign的压缩配置
- 掌握Feign的日志配置
一、 Feign简介
Feign [feɪn] 译文 伪装。Feign是一个声明式WebService客户端.使用Feign能让编写WebService客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解。不再需要拼接URL,参数等操作。项目主页:https://github.com/OpenFeign/feign 。
- 集成Ribbon的负载均衡功能
- 集成了Hystrix的熔断器功能
- 支持请求压缩
- 大大简化了远程调用的代码,同时功能还增强啦
- Feign以更加优雅的方式编写远程调用代码,并简化重复代码
总结:
- feign 是一个[声明式]REST客户端。(http客户端:RestTemplate 使用Restful 风格进行开发的)
- feign 是基于RestTemplate开发的一个声明式的Rest客户端;只需要写一个接口,定义一个注解,就可以直接使用。
二、Feign的快速入门
使用Feign替代RestTemplate发送Rest请求。
2.1 使用feign的步骤
(1)导入依赖
在user-consumer中添加spring-cloud-starter-openfeign依赖
<!--配置feign--> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>(2)创建Feign客户端(接口)
在user-consumer中创建com.it.feign.UserClient接口,添加一个注解进行声明@FeignClient,定义一个方法。
//name 指定的是要发送到哪个微服务对应的名字 @FeignClient(name = "user-provider",fallback = UserClientFallback.class) /*@RequestMapping("/user")*/ public interface UserClient {/*** 实际上是发送请求给微服务 获取数据的* @param id* @return*/@RequestMapping("/user/find/{id}")public User findById(@PathVariable(name = "id") Integer id); }解释:
(3)编写控制层
在user-consumer中: 创建com.it.controller.ConsumerFeignController,在Controller中使用@Autowired注入FeignClient,代码如下:
@RestController @RequestMapping("/feign") public class ConsumerFeignController {@Autowiredprivate UserClient userClient;//根据ID获取用户的数据(要使用feign的方式来获取)@RequestMapping(value = "/{id}")public User findById(@PathVariable(name = "id") Integer id){return userClient.findById(id);} }(4)在user-provider的controller 一定要【实现】声明的接口的方法。
@RestController @RequestMapping("/user") public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User findById(@PathVariable Integer id){System.out.println("这个是18081==================================");return userService.findById(id);}//provider接受这个请求@GetMapping("/find/{id}")public User find(@PathVariable Integer id){System.out.println("这个是18081==================================");return userService.findById(id);} }(5)在启动类中开启Feign
在user-consumer的启动类中添加@EnableFeignClients,开启Feign。
@SpringBootApplication @EnableEurekaClient @EnableCircuitBreaker @EnableFeignClients//开启feign public class UserConsumerApplication {public static void main(String[] args) {SpringApplication.run(UserConsumerApplication.class,args);}@Bean@LoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}@Beanpublic Logger.Level feignLoggerLevel(){//设置feign调用的级别是 Fullreturn Logger.Level.FULL;} }(6)测试
请求<http://localhost:18082/feign/2>,效果如下:
总结
以上是生活随笔为你收集整理的Spring Cloud Feign的原理及基本使用的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 四种方式实现数据共享
- 下一篇: 45个有用的JavaScript技巧,值