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。
Feign OpenFeign Feign是Spring Cloud组件中的 一个轻量级RESTful的HTTP服务 客户端Feign内置了Ribbon,用 来做客户端负载均衡,去调用服 务注册中心的服务。 OpenFeign是Spring Cloud在Feign的基础上支持了 SpringMVC的注解,如@RequesMapping等等。OpenFeign 的@Feignclient可以解析SpringMVc的@RequestMapping注 解下的接口,并通过动态代理的方式产生实现类,实现类中做 负载均衡并调用其他服务。 Spring-cloud-starter-feign spring-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