基于Spring Cloud的电商系统设计与实现——用户与商品模块的研究(下)
(1)在dao包的GoodsDao接口中,添加查询所有商品信息的方法、根据id查询商品方法(2)在resources下的mapper包中的GoodsMapper.xml文件中配置商品查询接口(3)在controller包中的GoodsController类中添加查询接口。
操作系统:Windows
Java开发包:JDK1.8
项目管理工具:Maven3.6.0
项目开发工具:IntelliJIDEA
数据库:MySQL
Spring Cloud版本:Finchley.SR2
Spring Boot版本:2.0.6.RELEASE
商品模块实现
搭建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:在工程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/getAll?uname=
查询商品详情
商品列表中点击"详情"链接,即可跳转到当前商品详情页面。
思路:点击详情链接的同时,将当前商品的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的电商系统在用户与商品模块的设计与实现中,注重了系统的安全性、灵活性和用户体验。通过微服务架构,系统不仅能够支持高并发请求,还能方便地进行功能扩展。未来,可以结合人工智能与大数据分析,进一步优化用户推荐系统和库存管理,提升整体运营效率和用户满意度
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)