项目架构与初始化
约 703 字大约 2 分钟
布欧-Lewyon
2026-05-15
首页 › Spring Cloud › 实战项目:微服务电商系统
项目整体架构
模块结构
shop-cloud/
├── pom.xml # 父 POM
├── shop-common/ # 公共模块
│ ├── pom.xml
│ └── src/main/java/com/shop/common/
│ ├── result/Result.java # 统一响应体
│ ├── exception/GlobalException.java
│ └── constant/Constants.java
├── shop-gateway/ # 网关
│ ├── pom.xml
│ └── Application.java
├── shop-user/ # 用户服务
│ ├── pom.xml
│ ├── Application.java
│ ├── controller/
│ ├── service/
│ ├── mapper/
│ └── entity/
├── shop-product/ # 商品服务
├── shop-order/ # 订单服务
└── shop-cart/ # 购物车服务父 POM
<project>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.0</version>
</parent>
<groupId>com.shop.cloud</groupId>
<artifactId>shop-cloud</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>shop-common</module>
<module>shop-gateway</module>
<module>shop-user</module>
<module>shop-product</module>
<module>shop-order</module>
<module>shop-cart</module>
</modules>
<properties>
<java.version>21</java.version>
<spring-cloud.version>2023.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
</properties>
<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>
</project>shop-common
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result<T> {
private Integer code;
private String msg;
private T data;
public static <T> Result<T> success(T data) {
return new Result<>(200, "success", data);
}
public static <T> Result<T> error(String msg) {
return new Result<>(500, msg, null);
}
}基础配置
# shop-user/src/main/resources/bootstrap.yml
spring:
application:
name: user-service
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
discovery:
server-addr: localhost:8848
profiles:
active: dev# Nacos → user-service-dev.yaml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/shop_user
username: root
password: root
app:
jwt:
secret: shop-cloud-secret-key-2026
expire: 86400数据库表
-- shop_user 数据库
CREATE TABLE `user` (
`id` bigint NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`phone` varchar(20),
`email` varchar(100),
`balance` decimal(10,2) DEFAULT 0.00,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`)
);
-- shop_product
CREATE TABLE `product` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
`price` decimal(10,2) NOT NULL,
`stock` int NOT NULL DEFAULT 0,
`description` text,
`image_url` varchar(500),
`status` tinyint DEFAULT 1,
PRIMARY KEY (`id`)
);
-- shop_order
CREATE TABLE `order` (
`id` bigint NOT NULL AUTO_INCREMENT,
`order_no` varchar(32) NOT NULL,
`user_id` bigint NOT NULL,
`product_id` bigint NOT NULL,
`quantity` int NOT NULL,
`amount` decimal(10,2) NOT NULL,
`status` varchar(20) NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_no` (`order_no`)
);
-- shop_order.order_item
CREATE TABLE `order_item` (
`id` bigint NOT NULL AUTO_INCREMENT,
`order_id` bigint NOT NULL,
`product_id` bigint NOT NULL,
`product_name` varchar(200),
`price` decimal(10,2),
`quantity` int,
PRIMARY KEY (`id`)
);小结
- 项目分 4 个业务服务 + 网关 + 公共模块。
- Nacos 统一注册与配置,Sentinel 流控降级,Gateway 统一入口。
- 每个服务独立数据库(
shop_user/shop_product/shop_order)。 Result<T>统一响应体,所有服务遵循相同规范。- Nacos 配置按 profile 隔离(dev / prod)。
下一节:用户与商品服务
