首页 > 其他分享 >自定义feign 解码器Decoder

自定义feign 解码器Decoder

时间:2023-08-11 14:34:54浏览次数:40  
标签:feign 自定义 解码器 CustomizedConfiguration Decoder import Configuration stock

直接上代码

package com.haier.hibp.stock.config;

import com.alibaba.fastjson.JSON;
import com.haier.hibp.stock.constant.WebConstants;
import com.haier.hibp.stock.service.form.FeignResultDto;
import feign.FeignException;
import feign.Response;
import feign.Util;
import feign.codec.Decoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.IOException;
import java.lang.reflect.Type;

@Configuration
public class CustomizedConfiguration {
    @Bean
    public Decoder feignDecoder() {
        return new GenericsFeignResultDecoder();
    }
}

class GenericsFeignResultDecoder implements Decoder {
    @Override
    public Object decode(Response response, Type type) throws IOException, FeignException {
        if (response == null || response.body() == null) {
            return new FeignResultDto<>(WebConstants.ERROR_CODE, WebConstants.INTERFACE_MESSAGE, null);
        }
        String bodyStr = Util.toString(response.body().asReader(Util.UTF_8));
        return JSON.parseObject(bodyStr, type);
    }
}

说明

1、上面的代码是自定义了一个返回值fastjson反序列化成对象的解码器
2、CustomizedConfiguration 类上的 @Configuration 如果加就全局生效。
3、CustomizedConfiguration 类上的 @Configuration 如果不加,可以在feign 接口上(如下面代码1所示),在feign 接口上,就作用于当前的feign 接口

代码1

@FeignClient(name = "stockFeign", url = "${feign.stock}", configuration = CustomizedConfiguration.class)

标签:feign,自定义,解码器,CustomizedConfiguration,Decoder,import,Configuration,stock
From: https://www.cnblogs.com/shareToAll/p/17622882.html

相关文章

  • python在抛出错误raise时,如何将相关信息一同携带出来(抛出自定义对象)?
    示例代码示例classMyClass(Exception):def__init__(self,info):self.info=infodefmy_method(self):print('MyClass.my_methodprintself.info:',self.info)try:raiseMyClass('错误信息')exceptMyClassase:......
  • CUDA 简单程序的基本框架和自定义设备函数
    1cuda程序的基本框架框架包含:头文件常量或者宏定义C++自定义函数和cuda核函数的原型声明main函数C++自定义函数核CUDA核函数的定义实现其中main函数中1intmain()2{3分配主机与设备代码内存4初始化主机中的数据5将某些数据从主机复制到设备6调用核函数在设备......
  • WEB自动化-Allure报告的自定义
    生成了Allure报告,可以自定义一些属性,使报告看起来层级更明显,看起来更清晰。下图显示有些优化的选项 创建测试用例:importallure#importlogging#logging.basicConfig(level=logging.INFO)@allure.epic("测试版本:V1.1")@allure.feature("首页模块")@allure.title("......
  • 利用pytorch自定义CNN网络(五):保存、加载自定义模型【转载】
    本文转载自:PyTorch|保存和加载模型1.简介本文主要介绍如何加载和保存PyTorch的模型。这里主要有三个核心函数:torch.save:把序列化的对象保存到硬盘。它利用了Python的pickle来实现序列化。模型、张量以及字典都可以用该函数进行保存;torch.load:采用pickle将反序列......
  • java自定义注解
    Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在java.lang.annotation包中。1、元注解元注解是指注解的注解。包括 @Retention@Target@Document@Inherite......
  • 利用pytorch自定义CNN网络(四):损失函数和优化器
    本文是利用pytorch自定义CNN网络系列的第四篇,主要介绍如何训练一个CNN网络,关于本系列的全文见这里。笔者的运行设备与软件:CPU(AMDRyzen™54600U)+pytorch(1.13,CPU版)+jupyter;训练模型是为了得到合适的参数权重,设计模型的训练时,最重要的就是损失函数和优化器的选择。损......
  • avue组件自定义按钮/标题/内容/搜索栏
    话不多说笔记直接分享!!一、自定义crud搜索栏组件<templateslot-scope="scope"slot="provinceCodeSearch"> <avue-select v-model="objFrom.provinceCode"//这是存放省份的code placeholder="请选择省市" :di......
  • 6.Filebeat的安装及收集日志到Elasticsearch并使用自定义索引
    利用Filebeat收集日志Filebeat是用于转发和集中日志数据的轻量级传送程序.作为服务器上的代理安装,Filebeat监视指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或Logstash进行索引.Logstash也可以直接收集日志,但需要安装JDK并且会占用至少500M以上的内存生产......
  • vue自定义指令(防抖)
    importVuefrom'vue'/***按钮防抖,300毫秒内只触发一次请求*区分了一下传参和不传参的情况*///不传参数,用法:v-debounce="test_debounce"Vue.directive('debounce',{inserted:function(el,binding){lettimerel.addEventListener('click',......
  • 【Fegin技术专题】「原生态」从源码层面让你认识Feign工作流程和运作机制
    推荐超值课程:点击获取Feign简介介绍什么是feign:一款基于注解和动态代理的声明式restfulhttp客户端。原理Feign发送请求实现原理微服务启动类上标记@EnableFeignClients注解,然后Feign接口上标记@FeignClient注解。@FeignClient注解有几个参数需要配置,这里不再赘述,都很简单......