Spring Cloud使用指南-Feign

优雅的服务调用方案-openFeign

目录

1、Feign概述
2、整合Feign
3、Feign拓展

1、Feign概述

Feign可以理解是对Ribbon的简单封装。但优雅了使用方法。
过去、我们通过Ribbon来绑定服务实现远程调用、但是面对多依赖服务环境下、大量的服务名可能会让你晕头转向、所以Feign提供的面向接口调用远程服务逐渐成为主流、Feign通过同样的接口代码、在类级注解@FeignClient上绑定被调用服务名、在方法声明上指定请求路径、就可以确定唯一URL来调用远程服务了、还是以熟悉的面向接口的方式。

2、整合Feign

整合Feign的方法有很多种、我更倾向于将Feign依赖的接口独立成一个模块、然后在Feign消费端实现调用。
Feign既然是对Ribbon的封装、那么我们的项目改变也是在消费端进行。但我们先来看看如何构建独立的接口模块

2.1、Feign接口模块设计

接口模块需要是一个boot项目!

2.1.1、POM文件

增加Feign的依赖

        <!--openfeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
2.1.2、启动类
@SpringBootApplication
@EnableFeignClients     //当前作为Feign接口模块、必须加此注解
public class Main {
2.2.3、接口设计
@FeignClient(value = "cloud-payment-service")
@Component
public interface PaymentService {
    @GetMapping(value = "/payment/get/{id}")
    Payment getPaymentById(@PathVariable("id") Long id);
}

@FeignClient绑定一个服务名
该接口需要注入到IOC容器、动态代理
@GetMapping与服务层的配置相同、
其实可以理解为是服务层接口的一个拓本、只是标注了@FeignClient使其多了一份职责。

至此、接口模块设计完成、然后在Feign消费模块引用即可

2.2Feign消费模块设计

我们只需要对以前的80端口消费模块进行一定修改即可、因为只是从restTemplate调用换成了接口调用
这里的POM文件同样需要引用Feign的依赖
但是、这里我们是引用的外部(@FeignClient)接口、所以我们的启动类上也不需要标注@EnableFeignClients注解、但需要配置@ComponentScan注解扫描接口模块内的标注了@Component的接口
启动类如下

@SpringBootApplication
@ComponentScan(basePackages = {"com.laoyang.inter","com.laoyang.feign"})
public class Fegin80 {

配置完成后、我们就可以像调用普通接口一样、调用远程服务了。

3、Feign拓展

3.1、开启日志系统

第一步、创建日志Bean

    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }

第二部、YML开启日志

  level:
    # feign日志以什么级别监控哪个接口
    com.atguigu.springcloud.service.PaymentFeignService: debug
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值