当前位置: 首页 > news >正文

基于Spring Cloud的电商系统设计与实现——用户与商品模块的研究(下)

操作系统:Windows

Java开发包:JDK1.8

项目管理工具:Maven3.6.0

项目开发工具:IntelliJIDEA

数据库:MySQL

Spring Cloud版本:Finchley.SR2

Spring Boot版本:2.0.6.RELEASE

目录
  • 商品模块实现
    • 搭建goods-provider
      • 步骤1:创建项目,引入依赖
      • 步骤2:在全局配置文件application.yml中添加Eureka、MySQL以及MyBatis的相关配置
      • 步骤3:在项目启动类添加@EnableEurekaClient注解
  • 搭建goods-consumer
    • 步骤1:创建项目,引入依赖
      • 步骤2:在全局配置文件application.yml中添加Eureka和Thymeleaf的相关配置信息
      • 步骤3:在项目启动类添加@EnableEurekaClient和@EnableFeignClients注解
  • 查询商品列表
    • 步骤1:在工程goods-provider中定义查询商品信息接口
    • 步骤2:在工程goods-consumer中调用goods-provider中的接口实现商品查询功能
  • 查询商品详情
  • 总结

商品模块实现

搭建goods-provider

步骤1:创建项目,引入依赖

在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为goods-provider的Spring Boot项目,将Artifact命名为goods-provider,添加Web、Eureka Client、MyBatis、公共实体类common、MySQL依赖。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.bushuo</groupId> <artifactId>goods-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <name>goods-provider</name> <description>Demo project for Spring Boot</description> <url/> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!--mybatis依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency> <!--eureka依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--mysql依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
步骤2:在全局配置文件application.yml中添加Eureka、MySQL以及MyBatis的相关配置

步骤3:在项目启动类添加@EnableEurekaClient注解

在项目启动类上添加@EnableEurekaClient注解开启Eureka Client功能。

搭建goods-consumer

步骤1:创建项目,引入依赖

在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为goods-consumer的Spring Boot项目,将Artifact命名为goods-consumer,添加Web、Eureka Client、公共实体类common、Feign、Thymeleaf、Hystrix等依赖。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.bushuo</groupId> <artifactId>goods-consumer</artifactId> <version>0.0.1-SNAPSHOT</version> <name>goods-consumer</name> <description>Demo project for Spring Boot</description> <url/> <licenses> <license/> </licenses> <developers> <developer/> </developers> <scm> <connection/> <developerConnection/> <tag/> <url/> </scm> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>com.bushuo</groupId> <artifactId>common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--feign依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> <version>2.0.0.RELEASE</version> </dependency> <!--web依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--eureka依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--thymeleaf前端模板依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <version>2.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--hystrix熔断依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>2.0.0.RELEASE</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
步骤2:在全局配置文件application.yml中添加Eureka和Thymeleaf的相关配置信息

步骤3:在项目启动类添加@EnableEurekaClient和@EnableFeignClients注解

在项目启动类上添加@EnableEurekaClient注解开启Eureka Client功能,添加@EnableFeignClients注解开启Feign功能。

查询商品列表

步骤:

1.在工程goods-provider中定义查询商品接口

2.goods-consumer调用goods-provider中的接口实现查询商品功能

  1. 启动测试查询商品信息功能

步骤1:在工程goods-provider中定义查询商品信息接口

(1)在dao包的GoodsDao接口中,添加查询所有商品信息的方法、根据id查询商品方法

(2)在resources下的mapper包中的GoodsMapper.xml文件中配置商品查询接口

(3)在controller包中的GoodsController类中添加查询接口


goods-consumer程序结构:

步骤2:在工程goods-consumer中调用goods-provider中的接口实现商品查询功能

(1)在GoodsService接口中编写Feign组件调用goods-provider中接口的查询方法

(2)在GoodsServiceHystrix类中编写处理查询的熔断处理逻辑

(3)在GoodsController类中添加退出登录的请求/quit,返回到登录页面

(4)在GoodsController类中添加查询所有商品列表的请求

因登录成功后直接跳转到首页显示商品列表,要获取登录名显示在首页上,故修改user-consumer中的UserController中的/login请求如下:

(5)在resources下的templates目录中创建静态页面

<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/html"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>首页</title> </head> <body> <div th:if="${session.uname} ne null"> 欢迎您:<em th:text="${session.uname}"></em><br> <a href="http://localhost:8005/goods/quit">退出</a> </div> <div th:if="${session.uname} eq null"> <a href="http://localhost:8003/admin/tologin">请您登陆</a> </div> <h1 align="center">首页</h1> <div align="center"> <form action="/goods/getName"> 商品名:<input type="text" name="name" placeholder="搜索商品"/> <input type="submit" value="搜索"/> </form> <table style="border:1px solid;width:600px;text-align:center"> <thead> <tr bgcolor="green"> <td>编号</td> <td>名称</td> <td>操作</td> </tr> </thead> <tbody> <tr th:each="good:${goods}"> <td th:text="${good.gid}"></td> <td th:text="${good.gname}"></td> <td> <a th:href="@{'http://localhost:8005/goods/detail?id='+${good.gid}}">详情</a> <a th:href="@{'http://localhost:8005/goods/deleteGoods?id='+${good.gid}}">删除</a> </td> </tr> </tbody> </table> <h3><a href="http://localhost:8005/goods/toAddGoods">添加新商品</a></h3><br> </div> </body> </html>

在登录页面上输入正确的用户名密码测试,能否跳转到getAll请求显示商品列表。
不能跳转
http://localhost:8005/goods/getAlluname=

查询商品详情

商品列表中点击"详情"链接,即可跳转到当前商品详情页面。

思路:点击详情链接的同时,将当前商品的id传递到处理的请求中,根据id查询出当前商品所有具体信息。

(1)在GoodsController类中添加查询商品详情的请求

(2)在resources下的templates目录中创建静态页面

detail.html:

删除商品
商品列表中点击"删除"链接,即可将当前商品从列表中清除。

思路:点击删除链接的同时,将当前商品的id传递到删除的请求中,根据id从商品表中将当前商品删除。
步骤1:在工程goods-provider中定义商品删除接口
(1)在dao包的GoodsDao接口中,添加删除商品信息的方法、根据id删除商品

(2)在resources下的mapper包中的GoodsMapper.xml文件中配置商品删除接口

(3)在controller包中的GoodsController类中添加删除商品接口

步骤2:在工程goods-consumer中调用goods-provider中的接口实现商品删除功能

(1)在GoodsService接口中添加商品删除方法deleteGoods的声明

(2)在GoodsServiceHystrix类中编写处理删除的熔断处理逻辑

(3)在GoodsController类中添加删除商品的请求

如果日志是登入失败,查看源码.

总结

基于Spring Cloud的电商系统在用户与商品模块的设计与实现中,注重了系统的安全性、灵活性和用户体验。通过微服务架构,系统不仅能够支持高并发请求,还能方便地进行功能扩展。未来,可以结合人工智能与大数据分析,进一步优化用户推荐系统和库存管理,提升整体运营效率和用户满意度

http://www.jsqmd.com/news/458307/

相关文章:

  • 完美解决org.mybatis.spring.MyBatisSystemException nested exception is org.apache.ibatis.reflection.Refl
  • 【C语言-第33章 标准输入输出】-002篇
  • 深度解析 Android 开发(影像类 APP 方向)职位:技术全景、面试指南与职业进阶
  • 最新SQL Server 2022保姆级安装教程【附安装包】
  • 【C语言-第34章 字符与字符串的输入输出】-001篇
  • Flutter 组件 genkit 的适配 鸿蒙Harmony 实战 - 驾驭大模型开发套件、实现鸿蒙端 AI 智能流式响应与提示词工程自动化方案
  • Epson M-G366PDG惯性测量单元:精准导航与卓越性能的理想选择
  • 福尔蒂技服团队驻厂年支持1860+工时,一次性良品率达99.27%
  • 基于Java+SSM+Django小工程预算系统(源码+LW+调试文档+讲解等)/小型工程预算软件/小型工程项目预算工具/简易工程预算系统/工程预算软件小型版/小型工程成本估算系统
  • 给SQL server数据库表字段添加注释SQL,附修改、删除注释SQL及演示
  • 最容易上手的AI找谁
  • 为什么你需要OpenClaw?从单Agent到多Agent的进化之路
  • 5 模型评估方法:准确率与混淆矩阵的实战解读
  • ISO9071外的质控实践:福尔蒂研发-QA-中试‘铁三角’机制(含架构与甘特图)
  • 最新最详细的配置Node.js环境教程
  • 私有化部署DeepSeek并SpringBoot集成使用(附UI界面使用教程-支持语音、图片)
  • flask-django基于python的疫苗发布和接种管理系统的设计与实现
  • 以引擎源码抄写+UE独立游戏相结合
  • 简易星露谷模组二次开发之旅:捐赠追踪、颜色优化与动物状态警告
  • 【2025最新】基于SpringBoot+Vue的船舶维保管理系统管理系统源码+MyBatis+MySQL
  • ros1科学安装方法
  • 行星减速器装配图CAD图纸
  • 超详细:数据库的基本架构
  • 禁止使用存储过程
  • 【毕业设计】SpringBoot+Vue+MySQL 船运物流管理系统平台源码+数据库+论文+部署文档
  • ROS1中的package.xml文件的作用:
  • 5G-A 定位精度提升深度解析
  • flask-django基于python的线上博物馆门票预约以及活动报名系统的设计与实现
  • 基于Java+SSM+Flask基于BS模式的直播电商交流平台(源码+LW+调试文档+讲解等)/BS模式/直播电商/交流平台/在线直播/电商直播/实时互动/商务直播/网络直播/直播互动/直播销售
  • 嘘!我在公司电脑上玩游戏,连客户端都没装!