服务接口调用_OpenFeign概述

OpenFeign是什么


Spring Cloud OpenFeign用于Spring Boot应用程序的声明式REST 客户端。

 

OpenFeign能干嘛

Feign旨在使编写Java Http客户端变得更容易。前面在使用 RestTemplate时,利用RestTemplate对http请求的封装处理,形 成了一套模版化的调用方法 

OpenFeign和Feign两者区别

  • Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它的使用方法是定义一个服务接口然后在 上面添加注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和 HttpMessageConverters。 
    FeignOpenFeign
    Feign是Spring Cloud组件中的 一个轻量级RESTful的HTTP服务 客户端Feign内置了Ribbon,用 来做客户端负载均衡,去调用服 务注册中心的服务。OpenFeign是Spring Cloud在Feign的基础上支持了 SpringMVC的注解,如@RequesMapping等等。OpenFeign 的@Feignclient可以解析SpringMVc的@RequestMapping注 解下的接口,并通过动态代理的方式产生实现类,实现类中做 负载均衡并调用其他服务。
    Spring-cloud-starter-feignspring-cloud-starter-openfeign

    注意: 接口+注解。

废话少说,直接撸代码

服务接口调用OpenFeign_入门案列

引入pom文件

<!-- 引入OpenFeign依赖 -->
<dependency>
  
<groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starteropenfeign</artifactId>
</dependency>

编写YML文件

eureka:
 client:
    # 表示是否将自己注册到Eureka Server
   register-with-eureka: true
    # 示是否从Eureka Server获取注册的服务信息
   fetch-registry: true
    # Eureka Server地址
   service-url:
     defaultZone:
http://eureka7001.com:7001/eureka,http://eur
eka7002.com:7002/eureka

编写主启动类
 instance:
   instance-id: cloud-openfeign-order-consumer
   prefer-ip-address: true
spring:
 application:
    # 设置应用名词
   name: cloud-openfeign-order-consumer
server:
 port: 80

注意:这里我是配置了eureka服务注册中心的,你们可以配置别的注册中心,也可以按照我的配

编写主启动类

/**
* 主启动类
*/
@Slf4j
@SpringBootApplication
#
@EnableFeignClients
public class OrderFeignMain80 {
    public static void main(String[] args) {
      
SpringApplication.run(OrderFeignMain80.clas
s,args);
        log.info("**************
OrderFeignMain80 服务启动成功 **********");
   }
}

编写业务逻辑接口PaymentFeignService

/**
 * 支付远程调用Feign接口
 */
@Component
@FeignClient(value = "cloud-paymentprovider")
public interface PaymentFeignService {
   @GetMapping("/payment/index")
   String index();
}

编写控制层Controller

/**
* 订单控制层
*/
@RestController
@RequestMapping("/order")
public class OrderController {
    @Autowired
    private PaymentFeignService
paymentFeignService;
    /**
     * 测试OpenFeign接口调用
     * @return
     */
    @GetMapping("/index")
    public String get(){
        return paymentFeignService.index();
   }
}

服务接口调用OpenFeign_日志增强

OpenFeign虽然提供了日志增强功能,但是默认是不显示任何日志 的,不过开发者在调试阶段可以自己配置日志的级别。

OpenFeign的日志级别如下

  • NONE:默认的,不显示任何日志;
  • BASIC:仅记录请求方法、URL、响应状态码及执行时间;
  • HEADERS:除了BASIC中定义的信息之外,还有请求和响应的头信息;
  • FULL:除了HEADERS中定义的信息之外,还有请求和响应的正文及元数据 

配置类中配置日志级别

@Configuration
public class OpenFeignConfig{
    
    /**
    * 日志级别定义
    */
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
   }
}

注意: 这里的logger是feign包里的。

yaml文件中设置接口日志级别

logging:
   level:
     com.itbaizhan.service: debug

注意: 这里的 com.itbaizhan.service 是openFeign接口所在的包名,当然你也 可以配置一个特定的openFeign接口。

测试 请求http://localhost/order/index

 


版权声明:本文为weixin_61498231原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。