Spring Cloud学习笔记-007

  • 声明式服务调用:Spring Cloud Feign

  Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能之外,它还提供了一种声明式的Web服务客户端定义方式。

  在使用Spring Cloud Ribbon时,通常都会利用它对RestTemplate的请求拦截来实现对依赖服务的接口调用,而RestTemplate已经实现了对HTTP请求的封装处理,形成了一套模板化的调用方法。在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口被多处调用,所以通常都会针对各个微服务自行封装一些客户端类来包装这些依赖服务的调用。Spring Cloud Feign在RestTemplate的基础上做了进一步的封装,由它来帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并用注解的方式来配置它,即可完成对服务提供方的接口绑定,简化了在使用Spring Cloud Ribbon时自行封装服务调用客户端的开发量。

1. 启动注册中心和demo-member实例,创建demo-customer-feign工程,骨架选择quickstart。

2. 加入相关依赖:

3. 编写启动类:

4. 定义MemberService接口,通过@FeignClient注解指定服务名来绑定服务(注:这里的服务名不区分大小写),然后再使用Spring MVC的注解来绑定具体该服务提供的REST接口。

5. 创建MemberController来实现对Feign客户端的调用。使用@Autowired直接注入上面定义的MemberService实例,并在getMember方法中调用这个绑定了member-service服务接口的客户端来向该服务发起/member接口的调用。

6. 在src/main/resources目录下创建application.yml文件:

7. 启动服务进行验证:

  • 参数绑定

  现实系统中的各种业务接口要复杂很多,HTTP的各个位置会传入各种不同类型的参数,并且在返回请求响应的时候也可能是一个复杂的对象结构。

1. 首先扩展一下服务提供方demo-member。增加下面这些接口定义,其中包含带有Request参数的请求、带有Header信息的请求、带有RequestBody的请求以及请求响应体重是一个对象的请求(注:User对象自定义,只有两个字段,String name和Integer age,此外,User中必须提供默认的构造方法,不然Spring Cloud Feign根据JSON字符串转换User对象时会抛出异常)。

2. 然后在demo-customer-feign应用中实现上述新增的请求的绑定:

  • 首先在demo-customer-feign中创建与上述一样的User类。
  • 然后,在MemberService接口中增加对上述三个新增接口的绑定声明:

  

3. 最后,在MemberController中新增一个/getMember2接口,来对新增的声明进行调用:

4. 启动项目,测试结果:

原文地址:https://www.cnblogs.com/skyer5217/p/8830096.html

时间: 2024-10-08 00:27:18

Spring Cloud学习笔记-007的相关文章

spring cloud 学习笔记--网关zuul学习

微服务是多个服务共同完成一件事情,那么"一致对外"就很有必要,就像我们去买面包,不可能先去找农民买小麦,再.... 盗图 spring cloud 引入zuul方式来实现这一功能 添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </depend

Spring Cloud学习笔记 【篇一:分布式配置中心 Spring Colud Config】

一.简介 Spring Cloud Config提供了在分布式系统的外部配置的客户端支持.通过配置服务(Config Server)来为所有的环境和应用提供外部配置的集中管理.这些概念都通过Spring的Environment和PropertySource来抽象,所以它可以适用于各类Spring应用,同事支持任何语言的任何应用.它也能为你支持对应用开发环境.测试环境.生产环境的配置.切换.迁移.默认的配置实现通过git实现,同事非常容易的支持其他的扩展(比如svn等).在spring cloud

Spring Cloud学习笔记-009

API网关服务:Spring Cloud Zuul API网关是一个更为智能的应用服务器,它的定义类似于面向对象设计模式中的Façade模式,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤.它除了要实现请求路由.负载均衡.校验过滤等功能之外,还需要更多能力,比如与服务治理框架的结合.请求转发时的熔断机制.服务的聚合等一系列高级功能. 在Spring Cloud中提供了基于Netflix Zuul实现的API网关组件——Spring Cloud Zuu

Spring Cloud学习笔记-010

分布式配置中心:Spring Cloud Config Spring Cloud Config是Spring Cloud团队创建的一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端和客户端两个部分.其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息.加密/解密信息等访问接口:而客户端则是微服务架构中的各个微服务应用或基础设施,他们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置

Spring Cloud学习笔记-012

分布式服务跟踪:Spring Cloud Sleuth 随着业务的发展,系统规模也会变得越来越大,各微服务间的调用关系也变得越来越错综复杂.通常一个由客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一条复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟高或错误的时候都有可能引起请求最后的失败.这时候,对于每个请求,全链路调用的跟踪就变得越来越重要,通过实现对请求调用的跟踪可以帮助我们快速发现错误根源以

Spring Cloud学习笔记-004

高可用注册中心 在微服务架构这样的分布式环境中,需要充分考虑发生故障的情况,所以在生产环境中必须对各个组件进行高可用部署,对于微服务如此,对于服务注册中心也一样.如果一直使用单节点的服务注册中心,这在生产环境中显然并不合适,需要构建高可用的服务注册中心以增强系统的可用性. 在Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方,服务注册中心也不例外.Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以刑场一组互相注册的服务中心,以实现服

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>

spring cloud 学习(4) - hystrix 服务熔断处理

hystrix 是一个专用于服务熔断处理的开源项目,当依赖的服务方出现故障不可用时,hystrix有一个所谓的断路器,一但打开,就会直接拦截掉对故障服务的调用,从而防止故障进一步扩大(类似中电路中的跳闸,保护家用电器). 使用步骤:(仍然在之前的示例代码上加以改造) 一.添加hystrix依赖 compile 'org.springframework.cloud:spring-cloud-starter-hystrix' 二.在需要熔断的方法上添加注解 package com.cnblogs.y

Spring Batch学习笔记二

此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自定义的工作单元,它是Job的主要构件块:每一个Step由三部分组成:ItemReader.ItemProcessor.ItemWriter:这三个部分将执行在每一条被处理的记录上,ItemReader读取每一条记录,然后传递给ItemProcessor处理,最后交给ItemWriter做持久化:It