专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
程序员的那些事  ·  C++ 的两个派系之争 ·  3 天前  
神秘的程序员们  ·  他从游戏走到了AI,从AI走到了诺贝尔奖 ·  2 月前  
OSC开源社区  ·  PostgreSQL将不再支持MD5密码 ·  4 天前  
51好读  ›  专栏  ›  OSC开源社区

spring boot / cloud 之 使用RestTemplate来构建远程调用服务

OSC开源社区  · 公众号  · 程序员  · 2017-06-19 08:30

正文



 RestTemplate 介绍 

RestTemplate 是 spring 框架中自带的 rest 客户端工具类,具有丰富的 API,并且在 spring cloud 中,标记 @LoadBalanced 注解,可以实现客户端负载均衡的 rest 调用。


思路


RestTemplate 虽然提供了丰富的API,但是这些API 过于底层,如果不稍加控制,让开发人员随意使用,那后续的代码也将会变的五花八门,难以维护。


同时,当系统规模大了之后,将会有更多的服务,并且服务之间的调用关系也将更加复杂,如果不进行管控治理的话,同样,项目同期也将越来越不可控


最后,服务间调用也需要有明确的权限认证机制,最好是能通过配置的方式来明确,哪些服务可以调用那些服务,从而来把控项目的复杂度。


本文将从以下几点来提供一个解决问题的思路:

• 通过spring boot 的@ConfigurationProperties机制来定义远程服务的元数据,从而实现权限认证的配置化


• 使用 HandlerInterceptor 来进行拦截,实现权限的验证


• 定义通用 Rms 类,来规范 RestTemplate 的使用



实现


1.实现权限配置


►1.定义 Application 元数据


2.定义 Service 元数据


► 3.定义 RmsProperties 类


4.在 properties 文件中进行配置


2.实现权限校验


1.定义 RmsAuthHandlerInterceptor 拦截器


2.完善 preHandle 方法-取出认证信息


3.完善 preHandle 方法-校验


4.定义 RmsConfig 类


5.定义 RmsConfig 类-注册 bean


6.在 properties 文件中进行配置



3.实现 Rms 类


1.定义 rms 类


2.定义 rms 类-call 方法


3.定义 rms 类-其他方法


4.客户端调用



结束

这样,规范了远程服务的调用,只关心接口编号和接口的入参和出参,能够增加沟通效率,并且也有了轻量级的服务治理机制,服务间的调用更可控,到最后,配置文件一拉出来一清二楚.



推荐阅读

2017 年最佳开源网络监控工具

2017 十大最佳用于隐私和安全保护的 Linux 发行版

大公司利用开源作品申请专利,谁伤了开源软件作者的心?

NGINX 开发指南(Part 3)

倾力推荐,学习 Kotlin 的 20 个实用资源

“放码过来”邀您亮“项”,一不小心就火了!

点击“阅读原文”查看更多精彩内容