SpringCloud OpenFeign(可以理解为RestTemplate+Ribbon)组件

OpenFeign底层使用Ribbon做的负载均衡

Feign是什么?

Feign是一个声明式的模板化的Http客户端,其作用与RestTemplate类似,能够使用HTTP请求访问远程服务。可以理解为RestTemplate的一种简化方案。Open
Feign是Spring Cloud 基于Netflix Feign的基础上开发的声明式服务调用组件,支持Spring
MVC注解,可以像Spring Web一样使用HttpMessageConverters等。

OpenFeign组件

1.什么Feign组件

历史:Feign(Netflix)----> 维护状态 ----> 推出的了Springcloud OpenCloud(spring)
这两个组件现在在使用、特性、使用方式一致 简介:Rest Client:OpenFeign RestTemplate
作用一致都是一个http客户端
RestTemplate:spring 框架封装HttpClient对象
OpenFeign:伪HtppClient客户端对象 它可以使用服务间通信变得更加简单,Feign默认集成了Ribbon,实现请求 负载均衡。 使用:1.写一个接口 + 一个注解
2.调用服务代码 ,自动完成数据传递过程中对象转换

2.为什么使用OpenFeign

a.RestTemplate 使用问题  
	1.路径写死  
	2.不能自动转换响应结果为对应对象 
	3.必须集成ribbon实现负载均衡
b.openFeign组件  
	 解决RestTemplate实现服务间通信所有问题

3.使用OpenFeign

1.创建两个独立springboot应用,并注册到服务注册中心 consul

2.引入服务注册中心依赖
<!--        consul依赖-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        <version>2.2.6.RELEASE</version>
    </dependency>
    <!--        健康检查依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
3.修改配置文件
server.port=9999
spring.application.name=PRODUCT

#想注册中心consul server服务注册地址
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
4.入口类加入注解
SpringBootApplication
@EnableDiscoveryClient  //开启服务注册中心客户端注解	
public class CategoryApplication {}
5.使用OpenFeign进行调用
	a.在服务调用方法引入OpenFeign依赖
  <!--       OpenFeign依赖 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
	b.在服务调用方入口类加入注解 开启Feign调用支持
SpringBootApplication
		@EnableDiscoveryClient  //开启服务注册中心客户端注解
		@EnableFeignClients  //开启openfein客户端调用		
		public class CategoryApplication {}
	c.在调用方,开发被调用方接口和实现的方法
@FeignClient(value = "PRODUCT")  //调用商品服务接口
public interface ProductClient {

		@GetMapping(value = "/product")  //调用商品服务
		String product();
}
	d.在controller中注入被调用方的接口,并使用
			@RestController
public class CategoryController {

    @Autowired
    private ProductClient productClient;

    @GetMapping(value = "/category")
    public String category(){

        String product = productClient.product();
        return "从种类中访问了商品服务"+product;
    }
}

服务间通信之参数传递和响应处理

1.微服务架构中服务间通信手段?
http协议:springcloud 两种方式
a.RestTemplate + Ribbon
b.OpenFeign(推荐)
2.服务间通信,参数传递和响应处理 参数传递:
a.传递零散类型参数
b.传递对象类型
c.数组或集合类型参数
3.零散类型参数传递【由于penFeign是伪HttpClient对象,所以在传递参数时候需要明确指定该参数的类型,所以需要使用注解来传参】
a. queryString方式传递参数: ?name=xiaochen 注意:在penFeign接口声明中必须给参数加入注解 @RequestParam

b.路径传递参数:url/xiaochen/23 注意:在penFeign接口声明中必须给参数加入注解 @PathVariable
c.对象类型参数传递 form表单方式 application/json方式: 注意:使用json方式在penFeign接口声明中必须给参数加入注解 @RequestBody

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值