SpringCloud(一.1)微服务远程调用 -- RestTemplate
项目结构
主项目cloud-demo下有两个子项目(微服务),每个项目都代表独立模块,都有自己独立的数据库。
每个项目(微服务)只负责自己模块的数据,互不干涉。
场景描述:
根据订单ID查询订单详情的同时,把订单所属的用户信息一并带回。
这里就涉及微服务之间的相互调用
实现:
1、注册RestTemplate
在订单微服务项目中的 Application启动类中注册RestTemplate
/* * 创建RestTemplate并注入Spring容器 * */ @Bean public RestTemplate restTemplate(){ return new RestTemplate(); }
@RestController @RequestMapping("order") public class OrderController { @Autowired private OrderService orderService; @Autowired private RestTemplate restTemplate; @GetMapping("{orderId}") public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) { // 根据id查询订单 Order order = orderService.queryOrderById(orderId); //利用RestTemplate发送http请求,根据用户ID查询用户 //url路径 String url ="http://localhost:8081/user/"+order.getUserId(); User user = restTemplate.getForObject(url, User.class); //赋值 order.setUser(user); return order; } }
用户微服务中提供了相关接口截图:
效果展示:
总结: