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