Fegin的基本调用

本文介绍了如何使用Feign作为HTTP客户端进行微服务间的调用,简化API调用过程。首先,通过面向接口编程并配置@FeignClient注解定义接口。接着,引入Feign的依赖,并开启Feign配置扫描注解。然后,更新服务包到Maven仓库,并解决更新包时可能出现的问题。最后,针对Swagger显示过多接口的情况,提供了通过FeignConfiguration类排除其他项目接口的解决方案。
摘要由CSDN通过智能技术生成

1、介绍

Feign是一种负载均衡的HTTP客户端, 使用Feign调用API就像调用本地方法一样,从避免了 调用目标微服务时,需要不断的解析/封装json 数据的繁琐。基于注解来实现,具备可插拔的特性;


2、使用

2.1、 面向接口编程,配置@FeginClien注解的接口

test项目里面配置@FeginClien注解的接口,name为Eureka中注册的服务名,区分大小写

在这里插入图片描述



2.2、导入pom依赖

其它项目想要调用test项目,则导入pom依赖

在这里插入图片描述



2.3、开启Feign配置,扫描@FeginClient注解:

开启Feign配置,扫描@FeginClient注解,为服务器包名(项目名:a-b-c 包名:aBc)

在这里插入图片描述


3、更新包

1、test项目deploy 一下,将包更新到maven仓库

在这里插入图片描述

2、 其它项目想要获取Maven上面的更新包,直接更新可能会更新不下来

2.1、 找到maven仓库地址,手动删除原来包,再点击更新
2.2、 如果你有两个maven仓库,切换仓库,再点击更新

在这里插入图片描述


4、排除包的其他接口

当A项目引用的test项目的包时,A项目的swagger会显示A+test两个项目的全部接口,但是此时我只想要自己项目的接口,不需要fegin其他项目的接口显示出来

解决方案
添加FeignConfiguration类,重新启动

在这里插入图片描述

FeignConfiguration .java

package com.seasky.middlegroundadmin.config;

import feign.Feign;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;

@Configuration
@ConditionalOnClass({Feign.class})
public class FeignConfiguration {

    @Bean
    public WebMvcRegistrations feignWebRegistrations() {
        return new WebMvcRegistrations() {
            @Override
            public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
                return new FeignRequestMappingHandlerMapping();
            }
        };
    }

    private static class FeignRequestMappingHandlerMapping extends RequestMappingHandlerMapping {
        @Override
        protected boolean isHandler(Class<?> beanType) {
            if(AnnotatedElementUtils.hasAnnotation(beanType, FeignClient.class)) {
                return super.isHandler(beanType) &&
                        (beanType.getName().indexOf("com.seasky.middlegroundadmin") >= 0 ||
                                !AnnotatedElementUtils.hasAnnotation(beanType, FeignClient.class));
            } else {
                return super.isHandler(beanType);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值