微服务之Springcloud 从零基础到入门——OpenFeign篇

微服务之Springcloud 从零基础到入门——OpenFeign篇

一. OpenFeign简介

微服务免不了服务的调用,在上一章Ribbon篇时用RestTemplate来进行服务调用。具体请参考:
微服务之Springcloud 从零基础到入门——Ribbon篇
但在使用时可以发现一个问题,那就是用RestTemplate调用服务时参数的传递过多,代码相对冗余复杂。Feign是一个声明式的REST客户端,它的目的就是让REST调用更加简单。OpenFeign是Spring Cloud 在Feign的基础上支持了Spring MVC的注解,如@RequesMapping等等。通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。

二. 前置环境介绍

本例仍然使用Eureka集群,在注册中心已经部署了两个相同的服务CLOUD-PAYMENT-SERVICE,实现了服务的高可用。其中父项目已经对版本进行了统一的管理,spring cloud版本为Hoxton.SR1版,eureka和openfeign都为2.2.1版

三. 基于OpenFeign的服务消费者的创建
  1. 引入依赖,因为要从服务注册中心拉取服务,所以必须引入Eureka的依赖
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  1. 编写application.yml文件,此处未将服务消费者注册到服务器上,因为它不需要被其他服务发现,只需要让OpenFeign去调用相应的服务即可。
server:
  port: 8604

eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
  1. 编写主启动类
@SpringBootApplication
@EnableFeignClients    //开启feign的功能
public class Order8604Application {
    public static void main(String[] args) {
        SpringApplication.run(Order8604Application.class,args);
    }
}
  1. 编写Service接口来映射服务提供者的方法,只有加了@EnableFeignClients注解才能使用OpenFeign的相关功能,此处必须添加@Component注解,将其加入容器,否则会产生错误。该处代码表示将CLOUD-PAYMENT-SERVICE服务中提供的方法映射到本接口当中,其中访问路径、返回值类型、函数名、参数类型和个数都必须保持和服务提供者中的方法相同。(最好直接copy过来,然后删除方法体)
@Component
@FeignClient(value = "CLOUD-PAYMENT-SERVICE")
public interface OrderService {
    @GetMapping("payment/findById/{id}")
    CommonResult<Payment> findById(@PathVariable("id") long id);
}
  1. 编写controller调用service服务,该处即为常规的controller代码,访问路径可以自己随意修改,只需要将刚刚的service接口注入进来即可。
@RestController
public class OrderController {
    @Resource
    private OrderService orderService;

    @GetMapping("consumer/payment/findById/{id}")
    public CommonResult<Payment> findById(@PathVariable("id") long id){
        return orderService.findById(id);
    }
}
四. OpenFeign的日志打印功能
  1. 编写Openfeign的配置类
@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;  //日志类别为详细日志
    }
}
  1. 修改yml配置文件,将日志级别修改为自己需要的级别
logging:
  level:
    com.lk.springcloud.service.OrderService: debug
  1. 日志打印结果
    日志打印
五. 下一篇介绍

本文介绍了OpenFeign的基本使用,如对日志功能感兴趣的小伙伴可以自行参考官网进行学习,接下来将对微服务当中的熔断框架Hystrix进行介绍。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值