Spring Cloud学习笔记-008
继承特性
通过上节的示例实践,当使用Spring MVC的注解来绑定服务接口时,几乎完全可以从服务提供方的Controller中依靠复制操作,构建出相应的服务客户端绑定接口。既然存在这么多复制操作,自然需要考虑这部分内容是否可以得到进一步的抽象。在Spring Cloud Feign中,针对该问题提供了继承特性来帮助我们解决这些复制操作,以进一步减少编码量。
1. 为了能够复用接口定义,先创建一个基础的Maven工程,骨架选择quickstart,工程名为demo-service-api。
2. 加入相关依赖:
3. 将上节中User类复制到本项目com.skyer.vo包中。
4. 创建com.skyer.service.MemberService2接口:
5. 接下来对demo-member进行重构,在pom.xml的dependency节点中,新增对demo-service-api的依赖:
6. 在demo-member中创建RefactorMemberController类实现demo-service-api中定义的MemberService2接口,并参考之前的MemberController来实现这三个接口:
7. 接下来在服务消费者demo-customer-feign的pom.xml文件中,新增对demo-service-api的依赖(同demo-member一样)。
8. 在demo-customer-feign中创建RefactorMemberService接口,并继承demo-service-api包中的MemberService2接口,然后添加@FeignClient注解来绑定服务。
9. 最后,在MemberController中,注入RefactorMemberService的实例,并新增一个请求/getMember3来触发对RefactorMemberService的实例的调用:
10. 启动项目测试。
服务降级
服务降级逻辑的实现只需要为Feign客户端的定义接口编写一个具体的接口实现类,其中每个重写方法的实现逻辑都可以用来定义相应的服务降级逻辑。
1. 定义MemberServiceFallback降级类,实现MemberService接口:
2. 在服务绑定接口RefactorMemberService中,通过@FeignClient注解的fallback属性来指定对应的服务降级实现类:
3. 自行测试相应效果。