使用Feign

Feign是一个声明式的Web服务客户端,简化了HTTP客户端的创建过程。本文探讨了将Feign与项目强耦合的问题,并提出将其作为一个独立模块以降低耦合度的解决方案。文中详细介绍了如何配置Feign的依赖、定义客户端、设置日志级别,以及在不同场景下如何在Spring Boot应用中启用和引用Feign客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Feign是一个声明式的Web服务客户端(Web服务客户端就是Http客户端),让编写Web服务客户端变得非常容易,只需创建一个接口并在接口上添加注解即可。

其一般是在项目中进行声明使用。我认为这样做的缺点是使feign与项目强耦合。

我认为将feign提出做为一个单独module来处理是一个相对较好的解决方案。

以下是相关的代码:

1、pom中增加以下依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

2、定义client

@FeignClient(value = "userservice")
public interface UserClient {
    @GetMapping("/user/{id}")
    User findById(@PathVariable("id") Long id);
}
client中相关的类也要声明
@Data
public class User {
    private Long id;
    private String username;
    private String address;
}

3、配置feign的日志输出级别(这步可以视情况而定)

public class DefaultFeignConfiguration {
    @Bean
    public Logger.Level logLevel(){
        return Logger.Level.BASIC;
    }
}
Logger.Level包括: NONE,BASIC,HEADERS,FULL 四种;

4、引入该module

        在需要使用feign的module中增加pom配置:

        <!--引入feign的统一api-->

        <dependency>

                <groupId>com.demo</groupId>

                <artifactId>feign-api</artifactId>

                <version>1.0</version>

        </dependency>

Application类中添加@EnableFeignClients(clients = {UserClient.class})注解

         当定义的feignclient不在springbootapplication的扫描包范围时,这些feignclient无法使用。有两种解决方案:

        a、 方案一:指定feignClient所在包。全部扫描          @EnableFeignClients(basePackage="cn.itcast.feign.clients")

        b、 方案二:指定feignclient字节码。可以指定多个,用到哪个指定哪个

         @EnableFeignClients(clients={UserClient.class,XXX.class})

        如只用一个可以这样写:

         @EnableFeignClients(clients=UserClient.class)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值