Spring Cloud FeignClient fallbackFactory配置详解

教程分享 > Java教程 > Spring Cloud (1898) 2024-08-07 11:05:39

Spring Cloud FeignClient fallbackFactory配置详解

一般FeignClient需要指定一个fallbackFactory或者fallback,一个一个接口的实现然后返回通用的错误代码有些重复工作。所以下面通过Java代理的方式来创建一个统一的fallbackFactory

首先是@FeignClient接口


/**
 * Spring Cloud API 类
 */
@FeignClient(value = "hws-srv-wrk",fallbackFactory = ServiceWorkApiFallback.class)
public interface IServiceWorkApi {

    /**********<Rzjl>XGeneratorCodeStart**********/
    @PostMapping("/rzjl/add")
    Boolean rzjlAdd(@RequestBody Rzjl entity);
    @PostMapping("/rzjl/addBatch")
    Boolean rzjlAddBatch(@RequestBody List<Rzjl> entityList);
    @PostMapping("/rzjl/deleteById/{id}")
    Boolean rzjlDeleteById(@PathVariable Serializable id);
    @PostMapping("/rzjl/deleteByIds")
    Boolean rzjlDeleteByIds(@RequestBody List<Serializable> idList);
    @PostMapping("/rzjl/updateById")
    Boolean rzjlUpdateById(@RequestBody Rzjl entity);
    @PostMapping("/rzjl/updateBatchById")
    Boolean rzjlUpdateBatchById(@RequestBody List<Rzjl> entityList);
    @PostMapping("/rzjl/findById/{id}")
    Rzjl rzjlFindById(@PathVariable Serializable id);
    @PostMapping("/rzjl/findByIds")
    List<Rzjl> rzjlFindByIds(@RequestBody List<Serializable> idList);
    @PostMapping("/rzjl/findAll")
    List<Rzjl> rzjlFindAll();
	@PostMapping("/rzjl/findList")
    List<Rzjl> rzjlFindList(@RequestBody SelectFilter<Rzjl> selectFilter);
	@PostMapping("/rzjl/findPage")
    Page<Rzjl> rzjlFindPage(@RequestBody Paging<Rzjl> paging);
    /**********<Rzjl>XGeneratorCodeEnd**********/

	/**********<Xlxw>XGeneratorCodeStart**********/
    @PostMapping("/xlxw/add")
    Boolean xlxwAdd(@RequestBody Xlxw entity);
    @PostMapping("/xlxw/addBatch")
    Boolean xlxwAddBatch(@RequestBody List<Xlxw> entityList);
    @PostMapping("/xlxw/deleteById/{id}")
    Boolean xlxwDeleteById(@PathVariable Serializable id);
    @PostMapping("/xlxw/deleteByIds")
    Boolean xlxwDeleteByIds(@RequestBody List<Serializable> idList);
    @PostMapping("/xlxw/updateById")
    Boolean xlxwUpdateById(@RequestBody Xlxw entity);
    @PostMapping("/xlxw/updateBatchById")
    Boolean xlxwUpdateBatchById(@RequestBody List<Xlxw> entityList);
    @PostMapping("/xlxw/findById/{id}")
    Xlxw xlxwFindById(@PathVariable Serializable id);
    @PostMapping("/xlxw/findByIds")
    List<Xlxw> xlxwFindByIds(@RequestBody List<Serializable> idList);
    @PostMapping("/xlxw/findAll")
    List<Xlxw> xlxwFindAll();
	@PostMapping("/xlxw/findList")
    List<Xlxw> xlxwFindList(@RequestBody SelectFilter<Xlxw> selectFilter);
	@PostMapping("/xlxw/findPage")
    Page<Xlxw> xlxwFindPage(@RequestBody Paging<Xlxw> paging);
    /**********<Xlxw>XGeneratorCodeEnd**********/

}


创建一个类实现FallbackFactory接口

@Component
public class ServiceAdminCenterFallback implements FallbackFactory<IServiceAdminCenterAPI>, Serializable {

    private IServiceAdminCenterAPI service;

    public ServiceAdminCenterFallback() {
        this.service = (IServiceAdminCenterAPI) GlobalInvocationHandler.newInstance(new Class[]{ IServiceAdminCenterAPI.class });
    }

    @Override
    public IServiceAdminCenterAPI create(Throwable throwable) {
        return this.service;
    }

}


代理创建接口工具GlobalInvocationHandler

登录后查阅

此处内容已经隐藏,需要登录后刷新查阅

登录/注册








 

https://www.leftso.com/article/1024.html

相关文章
Spring Cloud FeignClient fallbackFactory配置详解一般FeignClient需要指定一个fallbackFactory或者fallback,一个一个接口的实...
@FeignClient 配置 fallback无效 解决检查配置文件中是否有以下配置片段feign: hystrix: enabled: true该配置不依赖
前言最近在学习springcloud,在进行springboot拆分成springcloud项目的时候,我使用feign来进行微服务的调用,遇到了一些坑,特此总
1. 什么是 spring cloud?spring cloud 是一系列框架的有序集合
随着Spring Cloud 的越来越流行,国内很多公司也在开始使用该框架了
环境说明spring cloud 2021.04 spring cloud alibaba 2021.0.4 spring boot 2.6.13 nacos 2.2.3 问题排查...
项目源码下载:(访问密码:9987)Spring-Cloud-Circuit-Breaker.zip学习在调用底层微服务的同时利用调用的Spring Cloud Netflix堆栈组件之一Hys...
演示项目源码下载:(访问密码:9987)spring-cloud-zipkin.zipZipkin是非常有效的工具分布追踪在微服务生态系统
如何支持直接传递自定义对象那么我们希望能有一种方式保持跟controller完全一致只需要传递自定义的对象,既让服务提供端开发人员爽,也让服务消费端开发人员爽,
演示项目源码下载:(访问密码:9987)spring-cloud-config-server-git.zip微服务方法现在已经成为任何新 API 开发的行业标准,几乎所有组织都在推广它
演示项目源码下载:(访问密码:9987)Spring-Cloud-discovery-server.zip 了解如何创建微服务的基础上,Spring Cloud,对Netflix的Eureka注...
在这个 Spring cloud 教程中,学习在 spring boot/cloud 项目中使用 Netflix Ribbon 使用客户端负载平衡
演示项目源码下载:(访问密码:9987)Spring-Cloud-Consoul.zip了解如何创建微服务的基础上Spring cloud,对登记HashiCorp Consul注册服务器,以及...
项目源码下载:(访问密码:9987)spring-cloud-apigateway_zuul.zip学习使用Netflix Zuul及其与Spring Cloud 的牢固结合来创建负载均衡器
从nacos2.2.x spring cloud alibaba 2021.x开始,nacos默认需要配置用户名和密码,如下所示