springcloud简单入门
以商品下单为例
1.首先数据库有两个表shop_product 和 shop_order
2.创建一个maven父工程
配置pom.xml文件
<!--打包方式-->
<packaging>pom</packaging>
<!--继承springboot的父工程-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.3.2.RELEASE</version>
</parent>
<!--定义版本号-->
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF- 8</project.reporting.outputEncoding>
<spring-cloud.version>Hoxton.SR8</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.5.RELEASE</spring-cloud-alibaba.version>
</properties>
<!--dependencyManagement:它只负责jar的管理 不负责jar的下载,如果想下载需要再子工程中引入依赖来下载。-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这样一个简单的父工程就创建好了,然后创建微服务。
在写项目时候,有些实体和依赖,许多模块都会用到,我们可以把这些放在common基础模块里
3.首先创建一个common基础模块
pom文件中引入可能用的到的公共依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
</dependencies>
以及公用的实体
商品实体类Product
@Data
@TableName(value="shop_product")//手动对应数据库表名
public class Product {
@TableId(type= IdType.AUTO)//声明主键 以及类型 自动递增
private Integer pid;
private String pname;//商品名称
private Double pprice;//商品价格
private Integer stock;//库存
}
订单实体类Order
@Data
@TableName("shop_order")//手动对应数据库表名
public class Order {
@TableId(type = IdType.AUTO)//声明主键 以及类型 自动递增
private Long oid; //订单id
private Integer uid;//用户id
private String username;//用户名
private Integer pid;//商品id
private String pname;//商品名称
private Double pprice;//商品价格
private Integer number;//购买数量
}
基础模块就创建好了
3.创建商品模块和订单模块
使模块独立,雪崩效应影响小。
两者建立一致
pom文件都引入基础模块才能使用公共实体和依赖
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>shop-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
因为订单需要用到商品信息,先完成商品的模块搭建
正常写一个查询商品的功能模块
订单也一样的配置,打印日志路径记得改成订单的包路径
然后书写主启动类
单独启动商品模块服务,浏览器测试是否能查询到值
在搭建订单模块的时候会调用商品模块的查询功能,需要用到RestTemplate类中的getForObject方法
所以首先要将RestTemplate交给spring管理
然后控制层调用product模块的查询功能,来获取商品的名称和价格,查询的结果会存放在Product实体中。
在商品模块启动的基础上,再启动订单模块,浏览器简单测试
数据库数据