-
背景
- 在查询订单信息的时候,需要获取用户的信息,同时订单和用户分属于不同的服务中,并且服务的数据库的数据分开的,其直接连接数据库并操作数据库是不可以的。那我们可以通过RestTemplate对象请求另一个服务的API接口获取相关的响应数据,然后再封装返回
-
在Spring Boot中我们可以先注册RestTemplate的Bean
1.javapackage com.app.order.config; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; /** * webmvc的相关配置 * * @author Administrator */ @Configuration @Slf4j public class WebMvcConfig { /** * 注入RestTemplate的Bean * * @return 返回RestTemplate */ @Bean public RestTemplate restTemplate() { return new RestTemplate(); } } -
在使用的地方注入RestTemplate对象
1.java/** * 结合@RequiredArgsConstructor进行构造器注入 */ private final RestTemplate restTemplate; -
在查询的方法处使用远程调用
1.java/** * 根据id查询订单信息 * * @param id 订单id * @return 订单信息 */ @GetMapping("/{id}") public ResultBean<OrderVo> getById(@PathVariable Long id) { log.info("根据id查询订单信息..."); Order order = orderService.getById(id); if (order != null) { OrderVo orderVo = new OrderVo(); BeanUtil.copyProperties(order, orderVo); // 远程查找用户服务获取用户名信息 // url地址 String url = "http://127.0.0.1:8080/users/" + order.getUserId(); // 发起远程调用 ResultBean resultBean = restTemplate.getForObject(url, ResultBean.class); if (resultBean != null) { UserVo userVo = new UserVo(); BeanUtil.copyProperties(resultBean.getData(), userVo); orderVo.setUsername(userVo.getUsername()); } return ResultBean.success(orderVo); } return ResultBean.error("没有查询到对应订单信息"); }
【Spring Boot】如何通过RestTemplate获取另一个服务的接口返回信息
upton-nan2023-12-09 21:48
相关推荐
踏浪无痕42 分钟前
JobFlow已开源:面向业务中台的轻量级分布式调度引擎 — 支持动态分片与延时队列Pitayafruit1 小时前
Spring AI 进阶之路05:集成 MCP 协议实现工具调用韩立学长1 小时前
【开题答辩实录分享】以《自助游网站的设计与实现》为例进行选题答辩实录分享ss2731 小时前
线程池:任务队列、工作线程与生命周期管理不像程序员的程序媛1 小时前
Spring的cacheEvictSAP小崔说事儿1 小时前
在数据库中将字符串拆分成表单(SQL和HANA版本)凌云若寒2 小时前
半导体代加工企业标签模板痛点的全景式解决方案踏浪无痕2 小时前
JobFlow 实战:无锁调度是怎么做到的shoubepatien2 小时前
JAVA -- 11喵个咪2 小时前
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:kratos-bootstrap 入门教程(类比 Spring Boot)