地方特产商城 Spring Boot 后端项目

简介: 基于Spring Boot 3.5.6的地方特产商城后端,集成MyBatis、Redis与MySQL,支持店铺管理、用户认证及评价功能。采用RESTful架构,统一响应封装,具备缓存优化与自定义异常处理,代码规范清晰,易于扩展。

🏪 地方特产商城 Spring Boot 后端项目
📖 项目简介
这是一个基于 Spring Boot 3.5.6 开发的地方特产商城后端系统,提供店铺管理、用户认证、商品评价等核心功能,采用前后端分离架构,使用 MyBatis 作为持久层框架,集成 Redis 缓存提升性能。
🛠️ 技术栈
技术
版本
说明
Spring Boot
3.5.6
核心框架
Java
17
开发语言
MyBatis
3.0.5
持久层框架
MySQL
8.0.43
数据库
Redis
-
缓存中间件
Lombok
1.18.34
简化实体类开发
Spring Data JPA
-
数据访问层
Spring Validation
-
参数校验
🏗️ 项目架构
local-specialty-shop
├── src/main/java
│ └── com.werlite.localspecialtyshop
│ ├── Exception # 自定义异常
│ ├── config # 配置类
│ ├── controller # 控制器层
│ ├── dto # 数据传输对象
│ ├── entity # 实体类
│ ├── mapper # 数据访问层接口
│ └── service # 业务逻辑层
├── src/main/resources
│ ├── mapper # MyBatis XML 映射文件
│ └── application.properties # 配置文件
└── pom.xml # Maven 依赖配置
✨ 核心功能
1️⃣ 店铺管理模块
接口列表:
GET /api/shops - 获取所有店铺
GET /api/shops/region?region=first - 按区域查询
GET /api/shops/type?type=1 - 按类型查询
GET /api/shops/search?keyword=美食 - 搜索店铺
POST /api/shops - 新增店铺
PUT /api/shops - 更新店铺
DELETE /api/shops/{id} - 删除店铺
DELETE /api/shops/cache - 清除缓存
店铺实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Shop {
private Long id; // 主键ID
private String name; // 店铺名称
private String imgUrl; // 图片路径
private String tag; // 标签
private Double rating; // 评分
private String description; // 描述
private String price; // 价格范围
private String region; // 区域(first/second/third/fourth)
private String type; // 类型(1-6)
}
2️⃣ 用户认证模块
接口列表:
POST /api/user/login - 用户登录(返回 Token)
POST /api/user/logout - 退出登录
用户实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id; // 用户ID
private String username; // 用户名
private String nickname; // 昵称
private String password; // 密码(加密存储)
private String avatar; // 头像URL
private String phone; // 手机号
private String email; // 邮箱
private Integer gender; // 性别(0=未知,1=男,2=女)
private LocalDate birthday; // 生日
private Integer status; // 状态(0=禁用,1=正常)
private LocalDateTime createdTime; // 创建时间
private LocalDateTime updatedTime; // 更新时间
}
3️⃣ 评价模块
支持店铺评价的增删改查,提供用户与店铺的双向关联查询。
🔧 核心配置
Maven 配置(pom.xml)

org.springframework.boot
spring-boot-starter-parent
3.5.6

org.springframework.boot
spring-boot-starter-web


org.mybatis.spring.boot
mybatis-spring-boot-starter
3.0.5

com.mysql
mysql-connector-j
8.0.33

org.springframework.boot
spring-boot-starter-data-redis

org.projectlombok
lombok
1.18.34

应用配置(application.properties)
spring.application.name=local-specialty-shop
server.port=8081

MySQL 配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/local_specialty_shop?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

Hikari 连接池
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=300000

MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.werlite.localspecialtyshop.entity
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

Redis 配置
spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.database=0
spring.data.redis.timeout=3000
spring.data.redis.lettuce.pool.max-active=8
spring.data.redis.lettuce.pool.max-idle=8
spring.data.redis.lettuce.pool.min-idle=0
🎯 核心特性
✅ 统一响应封装
@Data
@AllArgsConstructor
public class ApiResponse {
private Integer code;
private String message;
private T data;

public static ApiResponse success(T data) {
return new ApiResponse<>(200, "成功", data);
}

public static ApiResponse error(String message) {
return new ApiResponse<>(500, message, null);
}
}
✅ Redis 缓存支持
店铺列表缓存
用户 Token 缓存
手动缓存清除接口
✅ 自定义异常处理
LoginFailedException - 登录失败异常
ResourceNotFoundException - 资源未找到异常
✅ 数据源健康检查
启动时自动检查 MySQL 驱动加载状态
🚀 快速开始

环境准备
JDK 17+
MySQL 8.0+
Redis
Maven 3.6+
数据库初始化
创建数据库 local_specialty_shop,导入初始化脚本
修改配置
根据实际情况修改 application.properties 中的数据库和 Redis 连接信息
启动项目
mvn spring-boot:run
访问接口
默认端口:http://localhost:8081
📝 API 调用示例
用户登录
POST http://localhost:8081/api/user/login
Content-Type: application/x-www-form-urlencoded
username=testuser&password=123456
查询所有店铺
GET http://localhost:8081/api/shops
搜索店铺
GET http://localhost:8081/api/shops/search?keyword=火锅
新增店铺
POST http://localhost:8081/api/shops
Content-Type: application/json

{
"name": "老字号美食店",
"imgUrl": "http://example.com/img.jpg",
"tag": "传统美食",
"rating": 4.5,
"description": "百年老店,味道正宗",
"price": "50-100元",
"region": "first",
"type": "1"
}
📊 项目亮点
前后端分离架构 - RESTful API 设计,易于对接前端
Redis 缓存加速 - 提升高频接口性能
统一响应格式 - 便于前端统一处理
异常统一处理 - 自定义异常体系
参数校验 - 使用 Spring Validation 保证数据合法性
代码规范 - 使用 Lombok 简化代码,注释清晰
📌 未来规划
[ ] 集成 Spring Security 实现完整的认证授权
[ ] 添加商品管理模块
[ ] 实现订单支付功能
[ ] 集成 OSS 对象存储服务
[ ] 添加接口文档(Swagger/Knife4j)
[ ] 性能优化与压力测试
📧 联系方式
如有问题或建议,欢迎交流!

⭐ 如果这个项目对你有帮助,欢迎 Star 支持!

这份博文内容详实、结构清晰,包含了技术栈、架构、核心代码、配置示例和 API 调用说明,你可以直接复制粘贴到你的博客平台(如 CSDN、掘金、博客园等)。根据平台的 Markdown 渲染效果,可能需要微调表格和代码块的格式。

相关文章
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
652 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
350 164
|
7天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
359 155

热门文章

最新文章