首页 > 其他分享 >Feign调用注册中心外的服务

Feign调用注册中心外的服务

时间:2023-07-11 16:57:32浏览次数:42  
标签:FeignClient Feign 调用 return 注册 注解 new public

参考博客:
https://blog.csdn.net/weixin_43612925/article/details/122923759
https://blog.csdn.net/weixin_42825651/article/details/125996165

1、@FeignClient()注解的使用

1. 服务的启动类要有@EnableFeignClients 注解才能启用feign客户端

2. FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上

2、@FeignClient标签的常用属性

name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现

url: url一般用于调试,可以手动指定@FeignClient调用的地址

decode404:当发生http 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException

configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract

fallback: 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口

fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码

path: 定义当前FeignClient的统一前缀

实操

@FeignClient(value = "test-service", url = "${url}",fallback = ServiceHystrix.class,configuration = FeignConfig.class)
public interface OrderFeign {
    @RequestLine("POST/test/list")
    BaseResponse<List<OrderInfoVo>> getList(QueryDto queryDto);
}
public class ServiceHystrix implements OrderFeign {
    @Override
    public BaseResponse<List<OrderInfoVo>> getList(QueryDto queryDto) {
        return BaseResponse.success(new ArrayList<>());
    }
}
@Configuration
public class FeignConfig implements RequestInterceptor {
    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    public Contract feignContract() {
        // feign 契约 @RequestLine
        return new Contract.Default();
        // springMVC契约 @GetMapping @PostMapping 等
        // return new SpringMvcContract();
    }

    // 记录请求和响应的头文件,正文和元数据的日志,需要在配置文件指出需要打印日志的类
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }

    // 连接超时时间说明:连接超时时间,单位分钟,读取超时时间,单位秒,重定向为是
    // @Bean
    // public Options options() {
    //     return new Options(10, TimeUnit.MINUTES, 60, TimeUnit.SECONDS, true);
    // }

    // 编码方式
    @Bean
    public Encoder feignFormEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }

    @Override
    public void apply(RequestTemplate requestTemplate) {

    }
}

异常

当一个类上同时使用@RequestMapping 和 @FeignClient 注解时,会抛出此异常信息:

java.lang.IllegalArgumentException: @RequestMapping annotation not allowed on @FeignClient interfaces

解决方案

方案一

将类上的@RequestMapping注解删掉,将路径更改到每个方法的路径上即可,然后使用@FeignClient自己的path属性指定路径

标签:FeignClient,Feign,调用,return,注册,注解,new,public
From: https://www.cnblogs.com/d111991/p/17544834.html

相关文章

  • 腾讯会议SDK调用记录
    腾讯会议SDK腾讯会议SDK是为合作方开发者提供的一组开发工具包,旨在帮助合作伙伴接入和访问腾讯会议资源和服务。通过二次开发,合作伙伴可以将腾讯会议SDK集成到企业内部的办公应用系统中,从而实现与腾讯会议的互联互通。 腾讯会议SDK已支持包括Mac、Windows、iOS、Android等主流......
  • java如何调用python.py文件并传参
    注意:java调用python.py文件并传参,在windows和linux中使用是不一样的我在windows操作系统中,java调用python文件并传参,是这样写的:完全没问题try{IntegertotalTestCaseCount=0;//传入python文件的参数:StringxmindFilePath,StringtestCaseKeyWo......
  • LabVIEW调用第三方exe软件或操作操作控制第三方软件界面的控件,如操控烧录软件等
    LabVIEW调用第三方exe软件或操作操作控制第三方软件界面的控件,如操控烧录软件等除了模拟鼠标和键盘来实现之后,还可以考虑另外一种方式,使用窗口句柄来直接操作程序如下面图片实例,操作串口助手,修改串口和波特率,并写入数据和读取数据这种方式可以避免电脑的分辨率变化和位置移动等问......
  • Linux 内核0.11 系统调用详解(上)
    备注:本文通过三个问题,引出Linux内核0.11的系统调用。操作系统为什么要引出系统调用?回答这个问题前,请先参看如下图:由图可以看出,从操作系统的角度来看,一台计算机主要分为两级:用户级以及内核级,系统调用主要作用就是连接用户级和内核级的“插座”。上层用户的许多对计算机硬件的操作,......
  • t113-c-led驱动篇(调用设备树)
    既然已经学会了调用驱动,那么接下来简单点个灯查看led所在寄存器我板子的led所控制的是pd22,所在寄存器应该是0x02000098然而这和我在设备树上找到的地址有出入,很奇怪,那就不管这个了自己添加一个吧。自己在board.dts上加一个ledio:我们看见这里有个&pio,而pio又是在dtsi中的so......
  • java级联调用的空指针问题
    Java中的空指针异常(NullPointerException)通常是由于在一个对象引用上调用了空引用的方法或访问了空引用上的实例变量而引起的。当你尝试使用一个空引用时,就会抛出空指针异常。一个常见的情况是在级联调用中出现空指针异常。级联调用是指对一个对象的多个方法调用进行链式操作。例如......
  • js调用浏览器打印功能
    1.打印开始结束的信息2.点击打印按钮<buttontype="button"onclick="doPrint()">打印</button><script>functiondoPrint(){console.log(33333333333)bdhtml=window.document.body.innerHTML;sprnstr="<!--startprint--&......
  • labview 调用,联合halcon 编程最近在做项目,主界面使用labview,图像识别部分使用halcon,然
    labview调用,联合halcon编程最近在做项目,主界面使用labview,图像识别部分使用halcon,然后返回结果到labview再进一步判断显示。具体流程1.使用labview采集图像2,图像传递给halcon处理3.labview读取halcon的处理结果这里共享的知识点有以下几个1.labview的里面的图像,也就是image类型......
  • springcloudalibaba -nacos config 配置中心以及服务发现和注册
    springcloud-config-nacos-client3377pom<!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>&l......
  • feign 微服务调用,post请求如何在URL 后面带参数
    ​ 在Feign微服务调用中,可以通过在URL后面添加参数来进行POST请求。参数可以以两种方式传递:作为路径参数或查询参数。 路径参数:可以将参数添加到URL的路径中,并使用@PathVariable注解来获取参数的值。例如:@FeignClient(name="example-service")publicinterfaceExample......