步骤:
-
注册一个RestTemplate的实例到Spring容器
-
@MapperScan("cn.itcast.order.mapper") @SpringBootApplication public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); } /** * 创建RestTemplate并注入Spring容器 * @return */ @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
-
修改order-service服务中的OrderService类中的queryOrderById方法,根据Order对象中的userId查询User
-
@RestController @RequestMapping("order") public class OrderController { @Autowired private OrderService orderService; @GetMapping("{orderId}") public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) { // 根据id查询订单并返回 return orderService.queryOrderById(orderId); } }
-
将查询的User填充到Order对象,一起返回
-
@Service public class OrderService { @Autowired private OrderMapper orderMapper; @Autowired private RestTemplate restTemplate; public Order queryOrderById(Long orderId) { // 1.查询订单 Order order = orderMapper.findById(orderId); // 2.利用RestTemplate发送http请求,查询用户 // 2.1 url路径 String url ="http://localhost:8081/user/"+order.getUserId(); // 2.2 发送http请求 实现远程调用 User user = restTemplate.getForObject(url, User.class); // 3.封装user到Order order.setUser(user); // 4.返回 return order; } }
测试一下成功