iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >@FeignClient使用详细教程(图解)
  • 638
分享到

@FeignClient使用详细教程(图解)

javaspring 2023-10-12 14:10:52 638人浏览 八月长安
摘要

@FeignClient使用详细教程图解 作用@FeignClient标签的常用属性使用流程通俗解释可以把它当成一个spring Bean 可以直接当成一个Service 给@FeignC

@FeignClient使用详细教程图解

作用

@FeignClient用于创建声明是api接口,该接口是RESTful风格的。Feign被设计成插拔式的,可注入其他组件和Feign一起使用。最典型的是如果Ribbon可用,Feign会和Ribbon相结合进行负载均衡

@FeignClient标签的常用属性

  • 源码截图
    在这里插入图片描述
  • name(和value相同):指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务(某个中心的名字)的名称,用于服务发现(图解如下)
  • url: url一般用于调试,可以手动指定@FeignClient调用的地址(图解如下)
  • decode404()即404是被解码,还是抛异常。
  • configuration()指明FeignClient的配置类,默认的配置类为FeignClientsConfiguration类,在缺省情况下,这个类注入了默认的Decoder、Encoder和Constant等配置的bean。
  • fallback()为配置熔断器的处理类。
    在这里插入图片描述
    在这里插入图片描述
  • FeignClient的配置类(configuration())
public class FeignUserSupportConfig{    @Bean    @Primary    @Scope("prototype")    public Encoder multipartFORMEncoder() {        return new springFormEncoder(new SpringEncoder(new ObjectFactory<HttpMessageConverters>() {            @Override            public HttpMessageConverters getObject() throws BeansException            {                return new HttpMessageConverters(new RestTemplate().getMessageConverters());            }        }));    }    @Bean    public feign.Logger.Level multipartLoggerLevel() {        return feign.Logger.Level.FULL;    }}

使用流程

  • 1.在启动类增加@EnableFeignClients
    在这里插入图片描述
  • 2.定义接口
package com.xxx.xxx.client;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.http.MediaType;import org.springframework.stereotype.Component;import org.springframework.WEB.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import java.util.Map;@Component@FeignClient(value = "user", configuration = UserSupportConfig.class)public interface TestClientService {        @RequestMapping(value = "/user/selectById", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)        Map upload(@RequestParam("userId") Integer id);}
  • 3.定义熔断类,发生错误时回调:
import java.util.List;import org.springframework.stereotype.Component;@Componentpublic class Hysitx implements TestClientService {@Overridepublic List<String> test(String[] names) {System.out.println("接口调用失败");return null;}}
  • 4.调用
    和基本的service调用一致
    1.先引入 @Autowired
    2.在方法中直接调用

通俗解释可以把它当成一个spring Bean 可以直接当成一个Service

给@FeignClient 添加Header信息

在@RequestMapping中添加

@FeignClient(name="custorm",fallback=Hysitx.class)public interface IRemoteCallService {@RequestMapping(value="/user/selectById",method = RequestMethod.POST,headers = {"Content-Type=application/json;charset=UTF-8"})    Map test(@RequestParam("userId") int id);}

在方法参数前面添加@RequestHeader注解:

@FeignClient(name="custorm",fallback=Hysitx.class)public interface IRemoteCallService {@RequestMapping(value="/user/selectById",method = RequestMethod.POST,headers = {"Content-Type=application/json;charset=UTF-8"})    List<String> test(@RequestParam("userId")@RequestHeader("Authorization") int id);}

使用@Header注解

@FeignClient(name="custorm",fallback=Hysitx.class)public interface IRemoteCallService {@RequestMapping(value="/user/selectById",method = RequestMethod.POST)@Headers({"Content-Type: application/json;charset=UTF-8"})    List<String> test(@RequestParam("userId") int id);}

来源地址:https://blog.csdn.net/weixin_44684812/article/details/125906729

--结束END--

本文标题: @FeignClient使用详细教程(图解)

本文链接: https://www.lsjlt.com/news/429593.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作