谷粒商城(一)

article/2025/9/13 22:20:13

谷粒商城(一)

  • 1、环境搭建
    • 安装 docker
    • docker 安装 mysql
    • docker 安装 redis
    • 安装配置 git
    • 准备工具 IDEA、VsCode
    • 从 gitee 初始化项目
  • 2、创建微服务项目
    • 1)、创建项目
    • 2)、初始化数据库
  • 3、使用人人开源搭建后台管理系统
    • 1)、renren-fast
    • 2)、renren-fast-vue
    • 3)、安装 Node.js
    • 4)、人人运行出错汇总:
  • 4、使用数据库逆向工程生成代码
    • gulimall-common 模块
    • gulimall-product 模块
      • 整合MyBatis-Plus
  • 5、分布式组件
    • nacos注册中心
    • nacos配置中心
    • openFeign
    • gateway

1、环境搭建

本项目的 redis、MySQL 都是使用在 docker 容器里面的,所以需要 Linux 环境

安装 docker

Docker 安装文档

1、卸载系统之前的 docker

 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2、安装 Docker-CE

# 安装必须的依赖
yum install -y yum-utils# yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++# 更新yum软件包索引
yum makecache fast
# 设置stable镜像仓库
这里使用阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
下面是官网,是外网,不推荐
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 docker,以及 docker-cliyum install docker-ce docker-ce-cli containerd.io

3、启动 docker

systemctl start docker

4、设置 docker 开机自启

systemctl enable docker

5、测试 docker 常用命令,注意切换到 root 用户下
docker version

docker 常用命令

6、配置 docker 镜像加速

# 登陆阿里云开发者平台 -> 点击控制台 -> 选择容器镜像服务 -> 下面操作文档里面的配置镜像加速mkdir -p /etc/docker
vim /etc/docker/daemon.jsontee /etc/docker/daemon.json <<-'EOF' 
{ "registry-mirrors": `["https://82m9ar63.mirror.aliyuncs.com"]
}
EOFsystemctl daemon-reload
systemctl restart

docker 安装 mysql

1、下载镜像文件docker pull mysql:5.7

2、创建实例并启动

docker run -p 3306:3306 --name mysql-v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

参数说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码

MySQL 配置
vi /mydata/mysql/conf/my.cnf

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

注意:解决 MySQL 连接慢的问题
在配置文件中加入如下,并重启 mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve:跳过域名解析

3、通过容器的 mysql 命令行工具连接
docker exec -it mysql mysql -uroot -proot

4、设置 root 远程访问

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

5、进入容器文件系统
docker exec -it mysql /bin/bash

docker 安装 redis

1、下载镜像文件docker pull redis

2、设置配置文件

mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

redis 自描述文件

3、修改 /etc/redis/redis.conf 文件

# 开启 redis 验证(可选)
requirepass 123456# 允许 redis 外地连接,注释掉# bind 127.0.0.1# 设置 
daemonize no# 开启 redis 持久化,appendonly yes (可选)

4、创建实例并启动

docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf

5、使用 redis 镜像执行 redis-cli 命令连接docker exec -it redis redis-cli

设置随着 docker 自启动

docker update mysql --restart=alwaysdocker update redis --restart=always

安装配置 git

1、下载 git https://git-scm.com

2、配置 git,进入 git bash

# 配置用户名
git config --global user.name "username" //(名字)
# 配置邮箱
git config --global user.email "username@email.com" //(注册账号时用的邮箱)

3、IDEA 初始化 git

在用户目录下(C:\Users\ASUS)创建忽略规则文件 git.ignore,写入内容
在 .gitconfig 文件中引用忽略配置文件
在 IDEA 中设置,定位 Git 程序

3、IDEA 集成 Gitee

安装 Gitee 插件,登录 Gitee 账号

4、配置 ssh 免密登录

进入 git bash;使用:ssh-keygen -t rsa -C "xxxxx@xxxxx.com"命令。 连续三次回车

然后执行 cat ~/.ssh/id_rsa.pub ,会得到一串密钥

登录进入 gitee,在设置里面找到 SSH KEY

将 密钥 的内容粘贴进去

使用 ssh -T git@gitee.com 测试是否成功即可

Git+码云教程

准备工具 IDEA、VsCode

idea 安装 lombok、mybatisx 、gitee 插件

Vscode 安装开发必备插件:

  • Vetur —— 语法高亮、智能感知、Emmet 等 包含格式化功能, Alt+Shift+F (格式化全文),Ctrl+K Ctrl+F(格式化选中代码,两个 Ctrl 需要同时按着)
  • EsLint —— 语法纠错
  • Auto Close Tag —— 自动闭合HTML/XML 标签
  • Auto Rename Tag —— 自动完成另一侧标签的同步修改
  • JavaScript(ES6) code snippets — — ES6 语法智能提示以及快速输入,除 js外还支持.ts,.jsx,.tsx,.html,.vue,省去了配置其支持各种包含 js 代码文件的时间
  • HTML CSS Support —— 让 html 标签上写 class 智能提示当前项目所支持的样式
  • HTML Snippets —— html 快速自动补全
  • Open in browser —— 浏览器快速打开
  • Live Server —— 以内嵌服务器方式打开
  • Chinese (Simplified) Language Pack for Visual Studio Code —— 中文语言包

在这里插入图片描述

从 gitee 初始化项目

新建仓库

在这里插入图片描述

在这里插入图片描述

IDEA 拉取项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、创建微服务项目

1)、创建项目

商品服务、仓储服务、订单服务、优惠券服务、用户服务

共同:

  1. 都加入的是 web、openfeign 依赖
  2. 每一个服务的包名
    afei.xxx(product/order/ware/coupon/member)
  3. 模块名:gulimall-coupon

商品服务

<?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.1.8.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>afei.gulimall</groupId><artifactId>gulimall-product</artifactId><version>0.0.1-SNAPSHOT</version><name>gulimall-product</name><description>谷粒商城-商品服务</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR3</spring-cloud.version></properties><dependencies><dependency><groupId>afei.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><!-- 版本后由SpringBoot进行管理--></dependency><!--引入redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><!--不加载自身的 lettuce--><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><!--jedis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--以后使用 redisson 作为分布锁,分布式对象等功能--><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.12.0</version></dependency><!--整合SpringCache简化缓存开发--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><!--使用 @ConfigurationProperties--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</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>

仓储服务如下(订单服务、优惠券服务、用户服务类似)

<?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.1.8.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>afei.gulimall</groupId><artifactId>gulimall-ware</artifactId><version>0.0.1-SNAPSHOT</version><name>gulimall-ware</name><description>谷粒商城-仓储服务</description><properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR3</spring-cloud.version></properties><dependencies><dependency><groupId>afei.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</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>${spring-cloud.version}</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>

修改 父类 项目的 pom.xml

<?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><groupId>afei.gulimall</groupId><artifactId>gulimall</artifactId><version>0.0.1-SNAPSHOT</version><name>gulimall</name><description>聚合服务</description><packaging>pom</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><modules><module>gulimall-coupon</module><module>gulimall-member</module><module>gulimall-order</module><module>gulimall-product</module><module>gulimall-ware</module><module>renren-fast</module><module>gulimall-common</module><module>renren-generator</module></modules>
</project>

修改 父类 项目的 .gitignore 文件,让其子类的部分文件不被提交

**/mvnw
**/mvnw.cmd
**/.mvn**/.gitignore
**/target/
.idea

可在这里查看提交到码云的内容预览

在这里插入图片描述

2)、初始化数据库

建立对应的数据库

在这里插入图片描述

将提供的 sql 文件里面的语句复制进 navicat 执行,直接拖拽sql文件容易出现问题

3、使用人人开源搭建后台管理系统

在这里插入图片描述
点进去后,克隆

在这里插入图片描述

在桌面右击,打开 Git Bash ,将代码下载到桌面

在这里插入图片描述

1)、renren-fast

将后端代码复制进 项目 目录

在这里插入图片描述

在 父类项目 里面加入 人人开源的 module

	<modelVersion>4.0.0</modelVersion><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall</artifactId><version>0.0.1-SNAPSHOT</version><name>gulimall</name><description>聚合服务</description><packaging>pom</packaging><modules><module>gulimall-coupon</module><module>gulimall-member</module><module>gulimall-order</module><module>gulimall-product</module><module>gulimall-ware</module><module>renren-fast</module><module>renren-generator</module><module>gulimall-common</module></modules>

renren-fast 里面有数据库的 sql 语句文件,在数据库创建新库 gulumall_admin ,执行 sql 语句

在这里插入图片描述
在这里插入图片描述

修改 renren-fast 的配置文件

在这里插入图片描述

启动此项目

注意,若 renren-fast 集成了 nacos,就还需要启动 Nacos 服务

问题解决:
1、报错:communication link failure ,或者显示初始化 init datasource error 的,数据库连接配置后面加 &useSSL=false
2、报错找不到包异常的,用一下右边侧边栏的maven里面的install命令
3、数据库连接配置 url 应该如下
gulimall_adminserverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
4、springboot 版本最好一样 2.1.8.RELEASE

访问 localhost:8080/renren-fast

在这里插入图片描述

2)、renren-fast-vue

将桌面上的文件目录 删除 .git 目录,然后用 VsCode 打开
在这里插入图片描述

3)、安装 Node.js

前端开发,少不了 Node.js
Node.js 是一个基于 ChromeV8引擎的 JavaScript 运行环境。
NPM是随同NodeJS一起安装的包管理工具,JavaScript-NPM,Java-Maven;

1)、官网下载安装node.js,并使用 node-v 检查版本。注意版本!!
在这里插入图片描述
在这里插入图片描述

2)、配置npm使用淘宝镜像
npm config set registry http://registry.npm.taobao.org/

在这里插入图片描述

打开 VsCode ,在终端输入 npm install

也可以选择项目文件夹下打开 cmd 命令窗口,和终端一样(注意需要配置环境变量,参考文章)

输入 npm install 安装 npm,nodejs默认集成npm

这里npm报错的同学,可以退出vs,然后管理员运行vs,再执行一遍。如果还是不行 就新建一个终端再输入一次npm stall就好了
有报错误的,可以试一下用 cnpm install试试先
出错可参考:https://blog.csdn.net/weixin_43859732/article/details/107779450
https://blog.csdn.net/wangbeita/article/details/112517509

在这里插入图片描述
出现以下界面说明成功

在这里插入图片描述

我这里没有使用 vs,而是使用 cmd 窗口进行操作的
注意执行 npm install 之前,为了防止出错,已经将 renren-fast-vue 项目文件夹下的 package.json 里面的 node-sass 改成 4.9.2

成功后可访问准备启动项目(注意 renren-fast 的 8080 在运行状态,数据库也在运行)

我这里没有下载 vs,在项目的目录下,使用管理员权限打开 cmd ,执行 npm run dev 便可以启动前端项目

在这里插入图片描述

这是 vs 启动成功样式
在这里插入图片描述

刷新 登录界面的 图形验证码,发现后台有输出,说明成功

在这里插入图片描述

4)、人人运行出错汇总:

1、启动renren-fast后台报错 Error creating bean with name ‘scheduleJobService‘

路径:src/main/java/io/renren/modules/job/config/ScheduleConfig.java

ScheduleConfig类中 //PostgreSQL数据库,需要打开此注释

2、在启动之后,登陆时发现跨域问题:
在这里插入图片描述
CorsConfig 类中 addCorsMappings 方法,需要打开此注释

@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowCredentials(true).allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").maxAge(3600);}
}

3、当有这种报错,说明是因为引入了 mybatis 的依赖,底层就会有引入数据源的相关配置。如果模块中没有使用到数据库,没有配置数据库相关信息,就会报错
在这里插入图片描述

解决:

在依赖中排除 数据库自动配置的相关依赖,也可以在启动类中排除
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)

4、使用数据库逆向工程生成代码

可以使用 人人开源的 自动生成项目,也可以使用 MybatisX 插件,使用 IDEA 自带的数据库管理工具

将人人开源的 代码生成 项目克隆到本地

在这里插入图片描述

删除目录中的 .git 目录,然后作为项目的 子模块

在这里插入图片描述

	<modules><module>gulimall-coupon</module><module>gulimall-member</module><module>gulimall-order</module><module>gulimall-product</module><module>gulimall-ware</module><module>renren-fast</module><module>gulimall-common</module><module>renren-generator</module></modules>

修改项目的配置文件 application.yml,更改数据库配置,数据库为需要生成代码的数据库

# mysql
spring:datasource:type: com.alibaba.druid.pool.DruidDataSource#MySQL配置driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://150.158.171.144:3306/gulimall_wms?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: root

修改信息文件 generator.properties ,更改里面生成类的包名和类名

#代码生成器,配置信息mainPath=afei
#包名
package=afei
moduleName=ware
#作者
author=afei
#Email
email=afei@gmail.com
#表前缀(类名不会包含表前缀)
tablePrefix=wms_

项目运行之后,访问页面,可以看到控制台,选择需要的表,进行生成代码

生成出来的代码会以压缩包形式下载

在这里插入图片描述

打开压缩包,可以看到生成好的代码

在这里插入图片描述

在生成的 controller 类里面,使用的是 shiro 的权限注解,但是本案例中使用的是 SpringSecurity ,所以需要删除注解
在这里插入图片描述
但是一个一个删除比较麻烦,可以在生成代码之前,在 renren-generator 项目里面修改模板
在这里插入图片描述

将代码复制进需要的项目里面,打开类,发现会有报错,因为一些工具类没有正确引用

对于 如下图 的 common 包中的工具类,在前面使用的 renren-fast 项目里面 的 common 包 下的 util 包里面都有现成的

在这里插入图片描述

在这里插入图片描述

然后打开其他类,发现还需要 Lombok、MybatisPlus 等依赖,所以可以提供一个公共类项目,用于提供公用的依赖 以及 一些工具类等

gulimall-common 模块

pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>gulimall</artifactId><groupId>afei.gulimall</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>gulimall-common</artifactId><description>每一个微服务公共的依赖,bean,工具类等</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!-- mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.12</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><!--导入mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><!--服务注册/发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--配置中心来做配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version><scope>compile</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.2.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>

实体类

将刚刚生成代码的项目里面需要用到的 common 包下的工具类,从 renren-fast 项目里面拷贝过来

暂时只有红框里面的内容,其他内容都是后续手动创建的

在这里插入图片描述

gulimall-product 模块

各个模块的端口号
在这里插入图片描述

整合MyBatis-Plus

导入依赖 mybatis-plus-boot-starter 3.2.0 (放在common项目)

<!-- mybatis-plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version></dependency>

配置 :

  1. 配置数据源;

    1. 导入数据库的驱动。mysql-connector-java 8.0(放在common项目)

      <!--导入mysql驱动 --><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17</version></dependency>
      
    2. 在application.yml配置数据源相关信息

      server:port: 10000# mysql
      spring:datasource:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql://150.158.171.144:3306/gulimall_pms?useUnicode=true&characterEncoding=UTF-8&useSSL=falseusername: rootpassword: root
      
    3. 配置MyBatis-Plus;

      1. 使用@MapperScan

        @MapperScan("afei.product.dao")
        @SpringBootApplication
        public class GulimallProductApplication {public static void main(String[] args) {SpringApplication.run(GulimallProductApplication.class, args);}}
        
      2. 告诉MyBatis-Plus,sql映射文件位置 ,并设置主键自增

        mybatis-plus:mapper-locations: classpath:/mapper/**/*.xmlglobal-config:db-config:id-type: auto #设置主键自增
        
  2. 测试
    在这里插入图片描述

5、分布式组件

nacos注册中心

在 common 项目里面引入依赖

	<!--服务注册/发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--配置中心来做配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.1.2.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

然后在其他项目里面更改配置文件

在这里插入图片描述

在启动类上使用注册发现的注解 @EnableDiscoveryClient

nacos配置中心

在 common 项目里面引入依赖
然后在其他项目里面更改配置文件

如何使用Nacos作为配置中心统一管理配置:

  1. 引入依赖, spring-cloud-starter-alibaba-nacos-config

  2. 创建一个bootstrap.properties
    在这里插入图片描述

  3. 需要给配置中心默认添加一个叫 数据集(Data Id),Data Id默认命名规则——应用名.properties

  4. 给 Data Id 添加任何配置

  5. 动态刷新配置
    控制器 controller 上面使用注解 @RefreshScope,表明动态获取并刷新配置

  6. 注意,若配置中心和文件中配置了相同的配置项,优先使用 配置中心的配置

  7. 加载多个配置集
    在这里插入图片描述在这里插入图片描述

openFeign

这里是引用

想要远程调用别的服务:

  1. 引入open-feign
  2. 编写一个接口,告诉SpringCloud这个接口需要调用远程服务
    1. 声明接口的每一个方法都是调用哪个远程服务的那个请求
  3. 开启远程调用功能
    启动类上使用注解 @EnableFeignClients

在需要进行远程调用的模块的 pom 文件里面引入依赖

<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<dependencies><dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</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>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>

目标方法如下:
在这里插入图片描述

在 member 模块编写接口

在这里插入图片描述

在 member 模块启动类上加注解

在这里插入图片描述

最后即可 在 member 模块 实现远程调用

在这里插入图片描述

gateway

新建模块,加入 gateway 依赖

  1. 开启服务注册发现(配置nacos的注册中心地址)
  2. 编写网关配置文件

在这里插入图片描述

	<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR3</spring-cloud.version></properties><dependencies><dependency><groupId>afei.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

启动类上开启注册发现 @EnableDiscoveryClient

编写配置文件

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.application.name=gulimall-gateway
server.port=88
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=b5d62415-0dea-4747-a65d-874cc6203bf2
spring:cloud:gateway:routes:
# 表明请求时如果有参数url,且参数值为baidu时,就会跳转到https://www.baidu.com
# 例如访问 88/hello?url=baidu 会跳转到 baodu.com/hello
#        - id: test_route
#          uri: https://www.baidu.com
#          predicates:
#            - Query=url,baidu # 表明请求时如果有参数 url,且参数值为 qq时,就会跳转到 https://www.qq.com
# 例如访问 88/hello?url=qq,会跳转到 qq.com/hello
#        - id: qq_route
#          uri: https://www.qq.com
#          predicates:
#            - Query=url,qq## 前端项目,/api
## http://localhost:88/api/captcha.jpg   http://localhost:8080/renren-fast/captcha.jpg
## http://localhost:88/api/product/category/list/tree http://localhost:10000/product/category/list/tree

http://chatgpt.dhexx.cn/article/LO9J0RMg.shtml

相关文章

谷粒商城:如何通过笔记复盘实现事半功倍?

前言 把谷粒商城做了一遍&#xff0c;其中遇的困难也记录了一下。将零散的笔记整理成有顺序的目录结构。方便自己回看、以及快速定位文章。特此记录、大部分在CSDN博客里边都可以搜索到。 大家想看的话也可以去这里看看&#xff1a;笔记地址传送门 后续还会继续维护这个笔记…

查壳、加壳、脱壳详细教程

查壳教程 1、打开软件后我们点击右上角的三个点&#xff0c;会弹出一个选择文件的窗口&#xff0c;我们选择要查壳的文件&#xff0c;同样也可以直接把需要查壳的软件拖到PEID页面里 2、这里拖入一个程序后出现如下信息页面 这里我们看到Borland Delphi 3.0,他不是一种壳&…

分布式项目-谷粒商城。

分布式项目一&#xff0c;分布图 二&#xff0c;环境搭建 1.安装linux 2.安装docker 1 卸载系统之前的docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine2 设…

竞业限制是什么意思?

竞业限制是指用人单位与掌握商业秘密的职工约定在劳动合同解除或终止后的一定期限内&#xff0c;劳动者不得到有竞争关系的其他用人单位任职&#xff0c;也不得自己生产与原单位有竞争关系的同类产品或经营同类业务。 竞业限制对不同的人意义是不同的&#xff0c;比如&#xf…

所谓的1261考核法算不算是末尾淘汰?

【问题】 有无精通劳动法的老哥&#xff0c;分析一下所谓的1261考核法算不算是末尾淘汰&#xff1f; 已知最后考核的那个1会被约谈&#xff0c;连续两次都是最后就会调岗或者解除劳动合同 【解析】 算的&#xff01; 应该是“末位淘汰制” 劳动法不支持“末位淘汰制”&…

数字滤波器的实现——低通滤波器再探究

在探究完滤波器原理之后&#xff0c;又面临一个问题就是数字滤波器如何实现的问题&#xff0c;因为在实际应用过程中&#xff0c;如果不接触硬件的话&#xff0c;低通滤波器一般都是通过编程实现的&#xff0c;具体代码应该怎么编写&#xff0c;在应用过程中又应该注意什么问题…

数字图像处理之低通滤波器实现原理及方法(Matlab)

1.傅里叶变换与频域 在之前的文中&#xff0c;我们已经进行过一些基本的图像处理。比如&#xff0c;使用低通滤波可以将图像模糊&#xff0c;也有些许降噪的作用。这些都是在空间域内进行的滤波处理&#xff0c;这个处理主要是依靠卷积来进行计算的。首先&#xff0c;从连续的一…

滤波器_理想低通/高通滤波器原理

1.滤波器作用 消除干扰杂讯噪声&#xff0c;对信号进行频率成分的选择2.高通滤波 过滤低频信息&#xff0c;让高频信息通过3.低通滤波 过滤高频信息&#xff0c;让低频信息通过4.理想低通滤波 D0表示通带半径&#xff0c;D(u&#xff0c;v)是到频谱中心的距离(欧式距离),公式…

带通滤波器电路图大全(三款带通滤波器电路设计原理图详解)

带通滤波器电路图设计&#xff08;一&#xff09; 传统的带通滤波器设计方法中涉及了很多复杂的理论分析和计算。针对上述缺点&#xff0c;介绍一种使用EDA软件进行带通滤波器的设计方案&#xff0c;详细阐述了使用FilterPro软件进行有源带通滤波器电路的设计步骤&#xff0c;…

T滤波器(低通滤波器)

1.电路原理 T滤波器&#xff0c;其基本原理是基于低通滤波器设计&#xff0c;实现阻高频通低频的需求&#xff0c;其电路图及传递函数如下。 2.传递函数 r(t)为输入,c(t)为输出&#xff0c;从电路原理我们得到输入输出公式&#xff1a; 将公式进行拉氏变换得到&#xff1a; 3.系…

低通滤波器和高通滤波器的程序实现原理推导

傅立叶变换,拉普拉斯变换和Z变换 对于信号分析而言,傅立叶变换是必不可少的,我们都知道傅立叶变换是把系统从时域变换到频域进行分析,那么拉普拉斯变换和Z变换是干什么的?简单的来说,由于傅里叶变换的收敛有一个狄利克雷条件&#xff0c;要求信号绝对可积/绝对可和。对于那些…

数字低通滤波器的原理及实现

首先说一下&#xff0c;数字滤波器是怎么实现的 1.首先根据电路建立低通滤波器时域系统微分方程&#xff0c;得出低通滤波器t域模型 2.其次将对时域微分方程进行拉式变换&#xff0c;得出低通滤波器的s域模型 3.将模拟滤波器转换为数字滤波器&#xff0c;对连续系统进行离散化…

简单易理解的RC滤波器(含电路仿真)

滤波器 滤波器是对波进行过滤的器件&#xff0c;是一种让某一频带内信号通过&#xff0c;同时又阻止这一频带外信号通过的电路。 滤波器主要有低通滤波器、高通滤波器和带通滤波器三种&#xff0c;按照电路工作原理又可分为无源和有源滤波器两大类。本文主要对低通、高通还有带…

一文读懂:常见低通、高通、带通三种滤波器的工作原理

滤波器 滤波器是对波进行过滤的器件&#xff0c;是一种让某一频带内信号通过&#xff0c;同时又阻止这一频带外信号通过的电路。 滤波器主要有低通滤波器、高通滤波器和带通滤波器三种&#xff0c;按照电路工作原理又可分为无源和有源滤波器两大类。今天&#xff0c;小编主要…

利用Excel对数据进行标准化处理

采用的公式为x&#xff08;x-min&#xff09;/(Max-min),这样标准化后的数据最大值为1&#xff0c;最小值为0。

数据分析-数据规范化的一些方法

数据规范化的几种方法 1. Min-Max规范化 from sklearn import preprocessing import numpy as np #初始化数据&#xff0c;每一行表示一个样本&#xff0c;每一列表示为一个特征 x np.array([[0.,-3.,1.],[3.,1.,2.],[0.,1.,-1.] ]) #将数据进行[0,1]规范化 min_max_scaler …

数据预处理(四)——数据标准化

主要内容&#xff1a; 数据预处理的必要性 数据清洗 数据集成 数据标准化 数据规约 数据变换与离散化 利用sklearn进行数据预处理 小结 四、数据标准化 不同特征之间往往具有不同的量纲&#xff0c;由此造成数值间的差异很大。因此为了消除特征之间量纲和取值范围的差异可能会造…

数据的标准化处理——基于python

数据的标准化处理——基于R 归一化&#xff08;normalization&#xff09;python实现 标准化python实现 之前写过用R来进行标准化&#xff1a; 数据的标准化处理——基于R 归一化&#xff08;normalization&#xff09; 将数据缩放到[0,1]的&#xff08;min—max Normalizati…

数据标准化实施

1.数据标准分类及制定 &#xff08;1&#xff09;数据标准的概念 数据标准&#xff1a;数据是企业资产。识别和定义业务数据&#xff0c;对关键数据制定并发布企业范围内的数据定义和标准。每一数据都有唯一指派的拥有者&#xff0c;负责定义数据的使用规则和保护规则。 根据…

python数据预处理 :数据标准化

何为标准化&#xff1a; 在数据分析之前&#xff0c;我们通常需要先将数据标准化&#xff08;normalization&#xff09;&#xff0c;利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同…