SpringCloud(Feign) 冷不防 2021-11-16 07:54 441阅读 0赞 ### Feign 声明式服务调用 ### * * 1. Feign介绍 * * 1.1 是什么: * 1.2 Feign 特性 * 2 使用 * * 2.1 maven依赖 * 2.2 配置 * 3 注解 * * 3.1 启动类 * 3.2 服务接口层 * 4 负载均衡 ## 1. Feign介绍 ## ### 1.1 是什么: ### > 1. Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It has pluggable annotation support including Feign annotations and JAX-RS annotations. Feign also supports pluggable encoders and decoders. Spring Cloud adds support for Spring MVC annotations and for using the same HttpMessageConverters used by default in Spring Web. Spring Cloud integrates Ribbon and Eureka to provide a load balanced http client when using Feign. > 2. If Hystrix is on the classpath and feign.hystrix.enabled=true, Feign will wrap all methods with a circuit breaker. Returning a com.netflix.hystrix.HystrixCommand is also available. This lets you use reactive patterns (with a call to .toObservable() or .observe() or asynchronous use (with a call to .queue()). 以上是官方文档给出的说法,Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。它是将Ribbon和Hystrix的功能整合在了一起,可以让我们不再需要显式地使用这两个组件。 ### 1.2 Feign 特性 ### * 可插拔的注解支持,包括Feign注解和JAX-RS注解; * 支持可插拔的HTTP编码器和解码器; * 支持Hystrix和它的Fallback; * 支持Ribbon的负载均衡; * 支持HTTP请求和响应的压缩。 ## 2 使用 ## ### 2.1 maven依赖 ### > **注意**:和Hystrix碰到的问题一样,注意一下自己的项目版本,如果版本是SpringBoot2.x.x版本,则应该引入以下依赖‘spring-cloud-starter-openfeign’,因为 ServerPropertiesAutoConfiguration 在SpringBoot 2.x.x 移除了。另一个容易迷惑的版本是’spring-cloud-starter-feign’,引入后会启动报错。 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.1.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.1.2.RELEASE</version> </dependency> > 不用引入Ribbon和Hystrix的依赖,因为openfeign已经集成这些依赖了,点进去可以看到的 > ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hqbDAyMQ_size_16_color_FFFFFF_t_70] ### 2.2 配置 ### 在配置文件中加入以下配置即可 server.port=3722 spring.application.name=05-springcloud-service-feign #eureka的服务注册地址 eureka.client.service-url.defaultZone=http://eureka8085:8085/eureka/,http://eureka8086:8086/eureka/ ### 3 注解 ### #### 3.1 启动类 #### package com.kinglong.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableFeignClients//开启Feign public class FeignApplication { public static void main(String[] args) { SpringApplication.run(FeignApplication.class, args); } } #### 3.2 服务接口层 #### controller层正常编写即可 package com.kinglong.springcloud.service; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; /** * 使用Feign的客户端注解绑定远程服务的名称 * 远程服务的名称可以大写,也可以小写 * * * @author haojinlong */ @FeignClient("01-springcloud-service-provider") public interface HelloService { /** * 声明一个方法,这个方法就是远程的服务提供者的那个方法 * * @return */ @RequestMapping("/api/hellos/hello") public String hello(); } 最后启动所有相关服务,就可使用了。 ### 4 负载均衡 ### Feign的负载均衡:定义一个注解有@FeignClient注解的接口,然后使用@RequestMapping注解到方法上映射远程的REST服务,此方法也是做好负载均衡配置的。具体就是下面的代码 /** * 使用fign的客户端注解绑定远程服务的名称 * 远程服务的名称可以大写,也可以小写 * * * @author haojinlong * @date 2019/7/297:58 */ @FeignClient("01-springcloud-service-provider") public interface HelloService { /** * 声明一个方法,这个方法就是远程的服务提供者的那个方法 * * @return */ @RequestMapping("/api/hellos/hello") public String hello(); } [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hqbDAyMQ_size_16_color_FFFFFF_t_70]: /images/20211116/106d846b709c4b93a9e01c056f0b3c98.png
相关 springcloudfeign原理和流程 什么是Feign? Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通 小咪咪/ 2023年10月09日 18:49/ 0 赞/ 93 阅读
相关 SpringCloudFeign引入feign-httpclient导致的坑 SpringCloudFeign底层是通过http/https协议进行通信,默认是采用`java.net.HttpURLConnection`,每次请求都会建立、关闭连接,为了 本是古典 何须时尚/ 2021年06月24日 13:58/ 0 赞/ 806 阅读
还没有评论,来说两句吧...