开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈:微服务调用-上】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/683/detail/11860
微服务调用-上
内容介绍:
一、微服务之间的调用关系
二、商品微服务有关代码
一、微服务之间的调用关系
1.在微服务架构中,最常见的场景是微服务之间的相互调用。以电商系统中常见的用户下单为例来演示微服务的调用:客户向订单微服务发起一个下单的请求,在进行保存订单之间需要调用商品微服务查询商品的信息,一般把服务的主动调用方称为服务消费者,把服务的被调用方称为服务提供者。
在这种场景下,订单微服务就是一个服务消费者,商品微服务就是一个服务提供者。
用户下单:客户下单发起请求:告诉网站要买几件什么商品。
2.微服务之间的调用关系:
一个请求传入 pid 告诉订单微服务(order)要买几件什么商品,订单微服务(order)创建订单前调用商品微服务(product)查询商品详细信息,订单微服务(order)向商品微服务(product)发起请求传递一个 pid,商品微服务(product)根据 pid 查询商品信息,然后将商品信息封装成 product 再传递回来。商品微服务(product)的方法是查询(根据pid查询商品信息),订单微服务(order)的方法创建订单(将订单保存到数据库)。如图:
二、商品微服务有关代码
1.商品微服务代码:
@RestController
@Slf4j
public class ProductController{
@Autowired
private ProductService productService;
//商品信息查询
@RequestMapping("/product/{pid}")
//请求路径,查询某一件商品
public Product product(@PathVariable("pid") Integer pid) {
log.info("接下来要进行{ }号商品信息的查询",pid);
//pid将放在{ }中
Product product = productService.findByPid(pid);
log.info("商品信息查询成功,内容为{ }",JSON.toJSONString(product));
return product;
}
}
2.补充 productService 代码:
接口代码:
package com.itheima.service;
import com,itheima.domain.Product;
public interface ProductService(
//根据pid查询商品信息
Product findByPid(Integer pid);
}
补充必要的做实现:
package com.itheima.service.impl;
import com.itheima.dao.ProductDao;
import com.itheima.domain.Product;
import com.itheima.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ProductServiceImpl implements ProductService{
@Autowired
private ProductDao productDao;
@Override
public Product findByPid(Integer pid) {
return productDao.findById(pid).get();
}
3.端口是8081,需要创建一个名字叫 shop 的数据库
启动结果:
4.系统已自动创建好表,需要加测试数据,添加后运行结果:
5.通过浏览器查询:
继续查询:
后台日志,如图: