** 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.客户端调用
结束
这样,规范了远程服务的调用,只关心接口编号和接口的入参和出参,能够增加沟通效率,并且也有了轻量级的服务治理机制,服务间的调用更可控,到最后,配置文件一拉出来一清二楚.
https://mp.weixin.qq.com/s/-HPOaG8z_v0EcwBkJ2d7hQ