操作系统:Windows> > Java开发包:JDK1.8> > 项目管理工具:Maven3.6.0> > 项目开发工具:IntelliJIDEA> > 数据库:MySQL> > Spring Cloud版本:Finchley.SR2> > Spring Boot版本:2.0.6.RELEASE > > #### 目录> > * 用户模块—user-service> * 商品模块—goods-service> * 数据库设计> * EurekaServer与公共工程的搭建> * 搭建Eureka Server> * * 步骤1:创建项目,引入依赖> * 步骤2:添加Eureka的相关配置> * 步骤3:定义Security安全控制> * 步骤4:在项目启动类添加注解> * 步骤5:测试运行> * 搭建公共工程> * * 步骤1:创建公共工程模块> * 步骤2:创建与数据库中各张表对应的实体类> * 步骤3:将Module项目打成jar包到Maven仓库> * 用户模块实现> * * 步骤2:在全局配置文件application.yml中添加Eureka、MySQL以及MyBatis的相关配置> * 步骤3:在项目启动类添加@EnableEurekaClient注解> * 搭建user-consumer> * * 步骤1:创建项目,引入依赖> * 步骤2:在全局配置文件application.yml中添加Eureka和Thymeleaf的相关配置信息> * 用户登录功能> * * 步骤1:在工程user-provider中定义用户登录接口> * 步骤2:在工程user-consumer中调用user-provider中的接口实现用户登录功能> * 步骤3:启动测试登录功能> * 用户注册功能> * * 步骤1:在工程user-provider中定义用户注册接口> * 步骤2:在工程user-consumer中调用user-provider中的接口实现用户注册功能此电商系统包含了用户与商品两个模块的部分功能,用户模块包括用户注册、用户登录;商品模块包括商品展示、商品详情、购物车以及订单。 在这里插入图片描述开发项目之前,有必要根据项目业务进行分析,设计一套合理的架构。本系统采用的是Spring Cloud微服务架构,根据业务功能将系统划分为5个服务,这5个服务构成了一套完整的微服务系统。其中,2个服务是基础服务,提供了一套服务治理的功能,它们分别是Eureka Server和网关服务;2个服务是资源服务,分别是用户服务和商品服务,对外暴露API接口,除此之外,还有一个common的工程,为资源服务提供基本的工具类。 在这里插入图片描述浏览器访问服务端时,首先会经过网关,网关会根据请求路由到不同的服务,并且每个服务都会从不同的MySQL数据库获取数据。用户模块—user-service-----------------在这里插入图片描述商品模块—goods-service------------------在这里插入图片描述数据库设计-----1.用户模块 在这里插入图片描述 /创建数据库webuser/ CREATE DATABASE webuser; /8.0以下版本MySQL执行以下SQL修改字符编码/ alter database webuser character set utf8; set names gbk; /使用数据库webuser/ USE webuser; /创建表user/ CREATE TABLE user ( uaccount int(11) AUTO_INCREMENT PRIMARY KEY, upassword varchar(255) NOT NULL , uname varchar(255) NOT NULL, usex varchar(50) ) ; /*向user表插入数据 */ insert into user(uaccount,upassword,uname,usex) values (10018,‘123’,‘rose’,‘女’), (10019,‘123’,‘jake’,‘男’), (10020,‘123’,‘张三’,‘男’), (10021,‘1’,‘李四’,‘男’), (10022,‘1’,‘李明’,‘男’), (10023,‘2’,‘whhh’,‘男’), (10024,‘1’,‘王五’,‘女’), (10025,‘1’,‘hh’,‘女’); 2.商品模块 在这里插入图片描述 /创建数据库webgoods/ CREATE DATABASE webgoods; /8.0以下版本MySQL执行以下SQL修改字符编码/ alter database webgoods character set utf8; set names gbk; /使用数据库webgoods/ USE webgoods; /创建数据表goods/ CREATE TABLE goods ( gid int(11) AUTO_INCREMENT PRIMARY KEY, gname varchar(255) , gdetails varchar(255) , gprice int(11) ) ; /向goods表插入数据/ insert into goods(gid,gname,gdetails,gprice) values (1,‘草莓’,‘可口草莓’,4), (2,‘苹果’,‘红富士苹果’,2), (3,‘橙子’,‘金黄的大橙子’,4), (4,‘葡萄’,‘吐鲁番葡萄’,12), (5,‘大虾’,‘山东大虾’,5), (6,‘带鱼’,‘好吃的带鱼’,50), (7,‘扇贝’,‘大神快来快来’,20), (8,‘皮皮虾’,‘啥的客户’,10), (9,‘脉动’,‘不在状态,脉动一下’,4), (10,‘汽水’,‘栓双’,8), (11,‘沙棘汁’,‘好喝’,3), (12,‘和其正’,‘dsa asd’,5), (13,‘菠菜’,‘大’,2), (14,‘生菜’,‘asdajlskdja’,2), (15,‘番茄’,‘好吃’,1), (16,‘胡萝卜’,‘asdkjlajkld’,2); EurekaServer与公共工程的搭建--------------------使用SpringInitializr方式创建一个项目web-store:后面其他项目均在父工程中创建模块Moudle的方式创建,结构如下: 在这里插入图片描述搭建Eureka Server---------------搭建eureka-server作为服务中心,是每个Spring Cloud微服务的心脏,所有服务将会注册到Eureka Server中。步骤:1.创建项目,引入依赖2.添加Eureka相关配置3.定义Security安全控制4.添加@EnableEurekaServer注解5.测试运行### 步骤1:创建项目,引入依赖在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为eureka-server的Spring Boot模块,将Artifact命名为eureka-server,在pom.xml文件中添加Eureka Server和Security依赖。 org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.cloud spring-cloud-starter-security 2.0.0.RELEASE 注:记得修改SpringBoot版本号,添加SpringCloud版本号,要匹配。添加管理依赖。(后面每次新创建项目同)### 步骤2:添加Eureka的相关配置在全局配置文件application.yml中添加Eureka的相关配置信息,和Security的安全配置信息。 在这里插入图片描述遇到这种情况 在这里插入图片描述 点击reload in ‘GBK’,ok 在这里插入图片描述### 步骤3:定义Security安全控制创建csrf包,csrf包下创建Security安全配置类WebSecurityConfig,该类定义了Security的安全控制。 在这里插入图片描述### 步骤4:在项目启动类添加注解@EnableEurekaServer注解在项目启动类EurekaServerApplication上添加@EnableEurekaServer注解开启Eureka Server功能。 在这里插入图片描述### 步骤5:测试运行在这里插入图片描述1. yml的语法格式有误这是最先考虑的问题,办法只有一个,就是校验yml语法,仔细检查看看,不多说了。2. application.yml文件格式问题如果你的项目没有配置错误,配置文件名称也正常,还出现这个问题,那一定是你的yml文件编码的问题。因为这个文件的编码格式是GBK,项目的编码格式是UTF-8,里面有注释,注释乱码,导致编译失败。办法如下:IDEA打开路径:File --> Settings --> File Encodings,然后将 /application.yml 的便面格式改成与项目一致,即:UTF-8; 保险起见,将“Project Encoding”也都改成UTF-8; 重启IDEA,然后启动项目,OK啦。 在这里插入图片描述 在这里插入图片描述 或者在 spring. freemarker.charset: utf-8 在这里插入图片描述启动eureka-server项目,在浏览器中访问http://localhost:8001。首先会跳转到登录认证页面,输入application.yml中配置的用户名密码登录。 在这里插入图片描述搭建公共工程------> 在用户模块中会有user-provider与user-consumer,我们需要在两个项目中都编写User实体类,会有很多重复性代码,这时,就需要把User实体类存放在公共项目中,并以Jar的形式打包到Maven仓库,方便提供者与消费者调用### 步骤1:创建公共工程模块在父工程web-store中使用Spring Initializr方式新建公共工程Moudle项目common,将Group命名为com.bushuo,将Artifact命名为common。### 步骤2:创建与数据库中各张表对应的实体类在公共工程common中创建entity包,并在该包中创建User实体类、Goods实体类。 在这里插入图片描述在这里插入图片描述 点击右键,Generate 在这里插入图片描述 点击Getter and Setter,然后全部选中。就OK了 在这里插入图片描述 注:实体类中属性名与对应数据表中字段名要相同,且类型对应### 步骤3:将Module项目打成jar包到Maven仓库选择IEDA工具右侧的MAVEN→common→Lifecyle,双击Lifecyle中的install进行打包。打包完成后,会在工程common的target目录下生成刚刚打包的jar。我出现了打包测试异常 在这里插入图片描述 在这里插入图片描述 org.apache.maven.plugins maven-surefire-plugin true 在去clean,然后install 在这里插入图片描述用户模块实现------搭建user-provider 步骤1:创建项目,引入依赖在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为user-provider的Spring Boot项目,将Artifact命名为user-provider,添加Web、Eureka Client、MyBatis、公共实体类common、MySQL依赖。 <?xml version="1.0" encoding="UTF-8"?> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.0.6.RELEASE com.bushuo user-provider 0.0.1-SNAPSHOT user-provider Demo project for Spring Boot <java.version>1.8</java.version> org.springframework.boot spring-boot-starter-web org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1 org.springframework.cloud spring-cloud-starter-netflix-eureka-client mysql mysql-connector-java 8.0.29 runtime org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies Finchley.SR2 pom import org.springframework.boot spring-boot-maven-plugin 注:若MySQL驱动依赖报红,则加一行版本号重新下载:5.x的MySQL选择:5.x.x8.x的MySQL选择:8.x.x### 步骤2:在全局配置文件application.yml中添加Eureka、MySQL以及MyBatis的相关配置在这里插入图片描述 注:8.0以下MySQL驱动名:com.mysql.jdbc.Driver8.0以上MySQL驱动名:com.mysql.cj.jdbc.Driver### 步骤3:在项目启动类添加@EnableEurekaClient注解在项目启动类上添加@EnableEurekaClient注解开启Eureka Client功能。搭建user-consumer---------------### 步骤1:创建项目,引入依赖在父工程web-store中创建Moudle,使用Spring Initializr方式创建一个名称为user-consumer的Spring Boot项目,将Artifact命名为user-consumer,添加Web、Eureka Client、公共实体类common、Feign、Thymeleaf、Hystrix等依赖。 <?xml version="1.0" encoding="UTF-8"?> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.0.6.RELEASE com.bushuo user-consumer 0.0.1-SNAPSHOT user-consumer Demo project for Spring Boot <java.version>1.8</java.version> org.springframework.cloud spring-cloud-starter-openfeign 2.0.0.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-thymeleaf 2.0.0.RELEASE org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-starter-netflix-hystrix 2.0.0.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies Finchley.SR2 pom import org.springframework.boot spring-boot-maven-plugin ### 步骤2:在全局配置文件application.yml中添加Eureka和Thymeleaf的相关配置信息在这里插入图片描述 步骤3:在项目启动类添加@EnableEurekaClient和@EnableFeignClients注解在项目启动类上添加@EnableEurekaClient注解开启Eureka Client功能,添加@EnableFeignClients注解开启Feign功能。 在这里插入图片描述用户登录功能------> 步骤:> > 1.在工程user-provider中定义用户登录接口> > 2.user-consumer调用user-provider中的接口实现用户登录功能 > 3. 启动测试用户登录功能### 步骤1:在工程user-provider中定义用户登录接口(1)在dao包的UserDao接口中,添加用户登录的方法 在这里插入图片描述(2)在resources下的mapper包中的UserMapper.xml文件中配置用户登录访问接口 在这里插入图片描述 <?xml version="1.0" encoding="UTF-8"?> select * from user where uname=#{uname} and upassword=#{upassword} (3)在controller包中的UserController类中添加登录接口 在这里插入图片描述 user-consumer程序结构:### 步骤2:在工程user-consumer中调用user-provider中的接口实现用户登录功能先构造相同结构 在这里插入图片描述(1)在UserService接口中编写Feign组件调用user-provider中接口的登录方法在这里插入图片描述 (2)在UserServiceHystrix类中编写处理用户登录的熔断处理逻辑 在这里插入图片描述 (3)在UserController类中添加处理用户登录时跳转登录界面的请求/tologin 在这里插入图片描述 注:采用 @Controller 注解将该类标识为控制器层的组件。与 @RestController 不同,@Controller 的方法返回值为 String 类型时,默认会被视为视图名称。结合在 application.yml 文件中配置的前端页面路径,方法可以返回 templates 目录中的 login.html 页面进行渲染。(4)在UserController类中添加处理用户登录的请求 在这里插入图片描述 (5)在resources下的templates目录中创建静态页面 login.html: 登录页面

登录页面

用  户:

密  码:

没有账号? 去注册
wecomle.html: 在这里插入图片描述### 步骤3:启动测试登录功能启动eureka-server、user-provider和user-consumer,使用浏览器访问localhost:8003/admin/tologin。 在这里插入图片描述用户注册功能------### 步骤1:在工程user-provider中定义用户注册接口(1)在dao包的UserDao接口中,添加用户注册的方法 在这里插入图片描述 (2)在resources下的mapper包中的UserMapper.xml文件中配置用户注册访问接口 在这里插入图片描述 (3)在controller包中的UserController类中添加注册接口 在这里插入图片描述 @RequestMapping(value = “/register”,method = RequestMethod.GET) public int register(@RequestParam(value =“upassword” )String upassword,@RequestParam(value =“uname” )String uname,@RequestParam(value =“usex” )String usex){ return userDao.register( upassword,uname,usex ); } ### 步骤2:在工程user-consumer中调用user-provider中的接口实现用户注册功能(1)在UserService接口中编写Feign组件调用user-provider中接口的注册方法 在这里插入图片描述(2)在UserServiceHystrix类中编写处理用户注册的熔断处理逻辑 在这里插入图片描述(3)在UserController类中添加处理用户注册时跳转注册界面的请求/toregister 在这里插入图片描述(4)在UserController类中添加处理用户注册的请求 在这里插入图片描述(5)在resources下的templates目录中创建静态页面 注册页面

注册页面

用  户:

密  码:

确认密码:

性 别:

已有账号? 去登录
步骤3:启动测试登录功能启动eureka-server、user-provider和user-consumer,使用浏览器访问注册页面:http://localhost:8003/admin/toregister 在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐